本の経典の面接試験問題は思い付きました。
三つ目の変数を使わずに二つの整数の交換を完了します。この面接問題は大体みんなが会ったことがあります。以下はjavaのコードです。
もう一つの方法があります。そして効率が早いです。
もちろん以上の2つのアルゴリズムは、jsにも対応しており、以下のようにサポートされている。
しかし、2つの変数が対象のタイプなら、java(強いタイプ)はどうすることもできないようです。jsはできますが、実現方法はまだまだ多くあります。
または
jsダイナミックタイプ(弱タイプ)システムおよびオブジェクト/配列の直接量特性を利用しています。他の強いタイプはいけません。コンパイラはタイプ変換エラーを提示します。
資源:http://en.wikipedia.org/wiki/XOR_swap
public class Person {
public static void main(String[] args) {
//
int a = 10, b = 5;
a = a + b;
b = a - b;
a = a - b;
System.out.println("a=" + a + "
b=" + b);
}
}
もう一つの方法があります。そして効率が早いです。
public class Person {
public static void main(String[] args) {
// 0
int a = 10, b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a=" + a + "
b=" + b);
}
}
もちろん以上の2つのアルゴリズムは、jsにも対応しており、以下のようにサポートされている。
var a = 11,b = 22;
a = a + b;
b = a - b;
a = a - b;
console.log(a+'
'+b)
またはvar a = 11,b = 22;
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log(a+'
'+b)
しかし、2つの変数が対象のタイプなら、java(強いタイプ)はどうすることもできないようです。jsはできますが、実現方法はまだまだ多くあります。
var a = {name:'jack'},b = {name:'tom'};
a = [a,b];
b = a[0];
a = a[1];
console.log(a.name+'
'+b.name)
または
var a = {name:'jack'},b = {name:'tom'};
a = {a:a,b:b};
b = a.a;
a = a.b;
console.log(a.name+'
'+b.name)
jsダイナミックタイプ(弱タイプ)システムおよびオブジェクト/配列の直接量特性を利用しています。他の強いタイプはいけません。コンパイラはタイプ変換エラーを提示します。
資源:http://en.wikipedia.org/wiki/XOR_swap