たとえば、引数として5または7のいずれかを受け取ることが保証されている関数がある場合、条件を使用せずに、関数が7を受け取った場合は5を返し、5を受け取った場合は7を返すようにします。
私はインタビューでこれを尋ねられ、かなり困惑しました、ありがとう。
たとえば、引数として5または7のいずれかを受け取ることが保証されている関数がある場合、条件を使用せずに、関数が7を受け取った場合は5を返し、5を受け取った場合は7を返すようにします。
私はインタビューでこれを尋ねられ、かなり困惑しました、ありがとう。
単純な算術:
return 7 - input + 5;
(これは次のように簡略化できますreturn 12 - input;
)
入力が7であるとしましょう:
リターン7-7+5->リターン5
または、入力が5の場合:
リターン7-5+5->リターン7
逆にすることができる任意の単純な可換計算を使用できます。
f(x)=7+5-x
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では^)は、オフの場合は2ビットをオンにし、オンの場合はオフにします。
どうですか:
public int q(int in)
{
static final int[] ret = {0, 0, 0, 0, 0, 7, 0, 5};
return ret[in];
}
もし私がインタビューをしていて、あなたが数値入力だけでそれを解決したとしたら、私の次の質問は「非数値入力でこの問題をどのように解決しますか?」でした。私は数学的な賢さを探していなかったからです。代わりに、これはどうですか?
List<String> options = new ArrayList<>(Arrays.asList("bob", "fred"));
options.remove("bob");
System.out.println(options.get(0));
これは、オブジェクトの同等性が正しく機能する限り、を含むすべてのタイプに簡単に適合させることObject
ができ、ボーナスとして、Groovyなどの他の言語ではるかに簡潔に表現できます。
println((["bob", "fred"] - "bob").first())
どちらの場合も、出力は明らかに「フレッド」です。私が面接したのなら、これが私が探している答えです。
public int xyz(int x) {
return 35 / x;
}
xor oneはどのように機能しますか?[ケースf(x)= 7 ^ 5^xの場合]
XOR(^)は排他的論理和であり、このように機能します
a|b|a^b
-------
0|0| 0
0|1| 1
1|0| 1
1|1| 0
したがって、XOR(^)を使用して、ある数値のビットを変更できます。たとえば、任意の数の最後の2ビットを変更する場合(のようxxxx10
に) 、3はバイナリ00011であるため、xxxx01
これを使用できます。numbrer ^ 3
XORに関するいくつかの事実があります
XORは対称です-> a^b
=b^a
XORは連想的です-> (a^b)^c
=a^(b^c)
a^a
= 0
(の1つはa
ゼロに置き換えられ、ゼロは変更されません)
a = 157の例(バイナリ010011101)
010011101
^ 010011101
-----------
000000000
0^a
= a
(の1つはa
ゼロのみを変更できるため、1に変更されます)
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