例如,如果我有一个保证接收5或7作为参数的函数,我希望函数在收到7时返回5,如果收到5则不返回5而不使用任何条件.
我在接受采访时被问到这个问题并且非常难过,谢谢.
Sim*_*erg 94
简单算术:
return 7 - input + 5;
(可以简化为return 12 - input;)
假设输入为7:
返回7 - 7 + 5 - >返回5
或者如果输入为5:
返回7 - 5 + 5 - >返回7
adi*_*tsu 71
您可以使用任何可以反转的简单交换计算:
f(x)=7+5-xf(x)=7^5^xf(x)=7*5/xSki*_*ead 33
public int f(int x) {
return x ^ 2;
}
Run Code Online (Sandbox Code Playgroud)
二进制:
7 = 111
5 = 101
2 = 010
Run Code Online (Sandbox Code Playgroud)
XOR(在java中为^)如果打开则关闭2位,如果打开则关闭.
キキジ*_*キジキ 14
怎么样:
public int q(int in)
{
static final int[] ret = {0, 0, 0, 0, 0, 7, 0, 5};
return ret[in];
}
Run Code Online (Sandbox Code Playgroud)
Rya*_*art 10
如果我是一次面试并且你只是为数字输入解决了它,我的下一个问题就是"你如何解决这个非数字输入的问题?" 因为我不会寻找数学上的聪明.相反,这个怎么样?
List<String> options = new ArrayList<>(Arrays.asList("bob", "fred"));
options.remove("bob");
System.out.println(options.get(0));
Run Code Online (Sandbox Code Playgroud)
这显然可以很容易地适应任何类型,包括Object,只要对象的相等性正确,并且作为奖励,它可以在其他语言中更简洁地表达,例如Groovy:
println((["bob", "fred"] - "bob").first())
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,输出显然都是"fred".如果我是一个面试,这就是我要找的答案.
public int xyz(int x) {
return 35 / x;
}
Run Code Online (Sandbox Code Playgroud)
xor如何工作?[对于案例f(x)= 7 ^ 5 ^ x]
XOR(^)是异或,并且以这种方式工作
a|b|a^b
-------
0|0| 0
0|1| 1
1|0| 1
1|1| 0
Run Code Online (Sandbox Code Playgroud)
因此,XOR(^)可用于更改某个数字的位.例如,当我们想改变任何数量(如最后两位xxxx10来xxxx01),我们可以做到这一点numbrer ^ 3,因为3是二进制00011.
以下是关于XOR的一些事实
a^b=b^a(a^b)^c=a^(b^c)a^a= 0(a将被替换为零的零和零将不会更改)
例子a = 157(二进制010011101)
010011101
^ 010011101
-----------
000000000
Run Code Online (Sandbox Code Playgroud)0^a= a(那些a只能改变零,所以他们会改变为1)
000000000
^ 010011101
-----------
010011101
Run Code Online (Sandbox Code Playgroud)所以使用事实(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
Run Code Online (Sandbox Code Playgroud)
同样的事情发生了x=5
(x^5)^7 = (5^5)^7 = 0^7 = 7
Run Code Online (Sandbox Code Playgroud)