返回2个可能的论点的另一个论点,而不使用条件
例如,如果我有一个保证接收5或7作为参数的函数,我希望函数返回5如果收到7和7如果收到5不使用任何条件。
我在接受采访时被问到了这个问题,非常难过,谢谢。
简单的算术:
 return 7 - input + 5; 
  (可以简化为return 12 - input; ) 
假设input是7:
返回7 – 7 + 5 – >返回5
或者如果input是5:
返回7 – 5 + 5 – >返回7
您可以使用任何可以颠倒的简单交换计算:
-  加法: f(x)=7+5-x
-   xor: f(x)=7^5^x
-  乘法: f(x)=7*5/x
 public int f(int x) { return x ^ 2; } 
在二进制中:
 7 = 111 5 = 101 2 = 010 
XOR(^在java中)如果closures,则打开2位,如果打开则closures。
怎么样:
 public int q(int in) { static final int[] ret = {0, 0, 0, 0, 0, 7, 0, 5}; return ret[in]; } 
如果我曾经是一个面试,而你只是为了数字input而解决了这个问题,那么我的下一个问题就是:“如何解决非数字input的问题? 因为我不会找math的聪明。 相反,这个怎么样?
 List<String> options = new ArrayList<>(Arrays.asList("bob", "fred")); options.remove("bob"); System.out.println(options.get(0)); 
 这显然可以很容易地适应任何types,包括Object ,只要Object的平等性能够正确地工作,作为奖励,它可以在其他语言(如Groovy)中更简洁地expression: 
 println((["bob", "fred"] - "bob").first()) 
在任何情况下,输出显然都是“fred”。 如果我是面试的人,这就是我要找的答案。
 public int xyz(int x) { return 35 / x; } 
xor如何工作? [for case f(x)= 7 ^ 5 ^ x]
异或(^)是异或并且以这种方式工作
 a|b|a^b ------- 0|0| 0 0|1| 1 1|0| 1 1|1| 0 
 所以异或(^)可以用来改变一些数字的位。 例如,当我们想要改变任何数字的最后两位时(比如xxxx10到xxxx01 ),我们可以用numbrer ^ 3来做,因为3是二进制00011。 
这里是关于异或的一些事实
-   XOR是对称的 – > a^b=b^a
-   XOR是关联的 – > (a^b)^c=a^(b^c)
- 
a^a=0(a将被replace为零,零不会被更改)例如a = 157(二进制010011101) 010011101 ^ 010011101 ----------- 000000000
- 
0^a=a(a中只能改变零,所以他们会改变他们)000000000 ^ 010011101 ----------- 010011101
 所以使用事实(1)和(2) 7^5^x == x^7^5 == x^5^7 
 让我们试着检查一下x^7^5 对x=7如何工作的。 
 (x^7)^5 = (7^7)^5 = 0^5 = 5 
 而x=5 
 (x^5)^7 = (5^5)^7 = 0^7 = 7