面试中一个简单程序优化的问题,怎么做?(百度不出来)

感觉学习有障碍 2017-07-19 04:13:07
题目:就是输入1返回2,输入2返回1,代码如下优化(别问我为什么少个return,反正题目上就是没有)。

public int getResult(int v) {
if(v==1){
return 2;
}
if(v==2){
return 1;
}
}


我是不知道怎么办了,这么简单的判断,还要优化?就改成一个return 三目运算了。但是面试官的表情显然,认为这样不对。
...全文
677 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
shalaoq 2017-07-21
  • 打赏
  • 举报
回复
引用 22 楼 hdt 的回复:
[quote=引用 16 楼 hdt 的回复:] return a^0x03;
引用 21 楼 shalaoq 的回复:
[quote=引用 20 楼 hdt 的回复:] [quote=引用 19 楼 shalaoq 的回复:] public int getResult(int v) { return v | 3; } 位运算更快??
| 是java按位或?还是别的? [/quote] 哈哈,应该用异或才对 return v ^3;[/quote] 看来我写对了 [/quote]666
真相重于对错 2017-07-21
  • 打赏
  • 举报
回复
引用 16 楼 hdt 的回复:
return a^0x03;
引用 21 楼 shalaoq 的回复:
[quote=引用 20 楼 hdt 的回复:] [quote=引用 19 楼 shalaoq 的回复:] public int getResult(int v) { return v | 3; } 位运算更快??
| 是java按位或?还是别的? [/quote] 哈哈,应该用异或才对 return v ^3;[/quote] 看来我写对了
shalaoq 2017-07-21
  • 打赏
  • 举报
回复
引用 20 楼 hdt 的回复:
[quote=引用 19 楼 shalaoq 的回复:] public int getResult(int v) { return v | 3; } 位运算更快??
| 是java按位或?还是别的? [/quote] 哈哈,应该用异或才对 return v ^3;
真相重于对错 2017-07-21
  • 打赏
  • 举报
回复
引用 19 楼 shalaoq 的回复:
public int getResult(int v) { return v | 3; } 位运算更快??
| 是java按位或?还是别的?
shalaoq 2017-07-21
  • 打赏
  • 举报
回复
public int getResult(int v) { return v | 3; } 位运算更快??
待良人 2017-07-21
  • 打赏
  • 举报
回复
引用 2 楼 qq_26508409 的回复:

public int getResult(int v) {
        
              return 3-v;
      
  }
还想咋的
卧槽,,,,搞事情啊
小灰狼 2017-07-21
  • 打赏
  • 举报
回复
这种题,顺着题意解答出来就不算错,非要让你猜到面试官心里想的那个答案,这种要求很扯淡,除非那个答案比你的好很多 打个比方,就象我饿了,朋友请我吃排骨饭,但是我却并不感谢他,因为我其实最喜欢吃牛肉面,当然了从来没有告诉过这个朋友我的喜好,反正没有选到我喜欢的那种,我就不喜欢。
cm2004 2017-07-20
  • 打赏
  • 举报
回复
1:返回情况不全,编译不通过 2:如果忽略上面的问题,如果当方法传入参数的取值只有1或者2的话,那么答案是 return v ^ 3;
popsidelee 2017-07-20
  • 打赏
  • 举报
回复
这种题目 也就面试官问的出来。确定面试官说的优化 不是问这个题目有什么错误嘛。
真相重于对错 2017-07-20
  • 打赏
  • 举报
回复
return a^0x03;
void_main_void 2017-07-20
  • 打赏
  • 举报
回复
引用 2 楼 qq_26508409 的回复:

public int getResult(int v) {
        
              return 3-v;
      
  }
还想咋的
666666666666666666666666666666666666666666666
张大教主 2017-07-20
  • 打赏
  • 举报
回复
public int getResult(int v) { return (v==1)?2:(v==2?1:v);//复合表达式 }
waxf523 2017-07-20
  • 打赏
  • 举报
回复
引用 6 楼 lewky_liu 的回复:
[quote=引用 2 楼 qq_26508409 的回复:]

public int getResult(int v) {
        
              return 3-v;
      
  }
还想咋的
666还有这种操作[/quote] 估计出题人就是这个意思了,又不是用三目运算,也不是if else判断;绝逼是这样的
galiniur0u 2017-07-20
  • 打赏
  • 举报
回复
题目的意义目的就是去掉判断,如何实现该函数。所以不应该加入if,就要从+-来搞了。
n260296859 2017-07-20
  • 打赏
  • 举报
回复
2楼6666666 return v==1?2:1; 不就完了。。
110成成 2017-07-20
  • 打赏
  • 举报
回复
首先这编译不过,再者如果优化,直接return 3-v
一剑侵心 2017-07-20
  • 打赏
  • 举报
回复
引用 8 楼 cm2004 的回复:
1:返回情况不全,编译不通过 2:如果忽略上面的问题,如果当方法传入参数的取值只有1或者2的话,那么答案是 return v ^ 3;
这位真是神人,这都能想到。 个人觉得,实际的开发中用到得很少。因为难以理解,别人也不好维护。
雨临Lewis 2017-07-19
  • 打赏
  • 举报
回复
引用 2 楼 qq_26508409 的回复:

public int getResult(int v) {
        
              return 3-v;
      
  }
还想咋的
666还有这种操作
岑如花 2017-07-19
  • 打赏
  • 举报
回复
受到2楼启发,你能不能问一下面试官传入的值会是那些
懒惰的gler 2017-07-19
  • 打赏
  • 举报
回复
用 switch..case?
加载更多回复(3)

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧