配列内で一つの数字のみを求める問題で a^ = nums[i]でなんで4が求まる理由がわかりません。
ここでいう一つの数字とは[4, -1, 2, -1, 2]のうちの一つのみある4を一つの数字とする。
配列の長さを記述する時、^をVSで見た時はlength = ^に置き換えることができたので^ = lengthではないのですか?
C#
1コード 2 3int[] nums = {4, -1, 2, -1, 2 }; 4 5 public int singleNumber(int[] nums) { 6 int a = 0; 7 for (int i = 0; i < nums.Length; i++) 8 { 9 a ^= nums[i]; 10 } 11 return a; 12 }
C# ^演算子
で調べたりしていないのでしょうか。
「シングル数字」とは何でしょうか。問題の求めるところなので、ここで齟齬があれば正す必要があります。
また、「^ってlength - 1」との理解が謎です。
本質的にはXOR(EXCLUSIVE OR / 排他的論理和)を知っていることが出発点だと思いますが、いかがでしょうか。
^ = length は配列の長さです。-1は不要でした。
論理排他的 OR 演算子 = ^らしいですね。
boolについてしか書いていなかったのでint型ではどう使うかはわかりませんが。
真偽の時のみ真を返すことはわかりましたが、そこでa ^ = nuns[i] にどう関係するか意味不明です。
1T2R3M4さん、調べても理解できなかったのですがfor文の中のa ^= nums[i];を回数分処理する場合、
-4 -> -5 -> -7 -> 6 -> 4となり、4が導きだされるのですが、この計算式はいったいどういった計算なのでしょうか?
このコードは何なのです?
(ご自身で書いた? それとも,問題の答えとして示された?)
例えば
int[] nums = {4, -1, 2, -1, 2, 2 };
とかにした時点でもう,1つしかない4を結果とできない欠陥コードに見えますが…
これは回答のコードです。もちろん、自分で正解した回答したコードもありますが、別解としてこのコードがあったので質問しました。
https://leetcode.com/problems/single-number/
問題です。
int[] nums = {4, -1, 2, -1, 2 };の配列は自分でデバックとるために適当に定義しました。
![退会済みユーザー](https://ddjkaamml8q8x.cloudfront.net/profileImages/deletedUser/icnUserSample.jpeg)
他の方も聞いてますが「シングル数字」って何? 聞かれたことには答えませんか。話が噛み合わなくなります。
問題は質問に書き直しましたよ?
改めて言いますと、
ここでいうシングル数字とは[4, -1, 2, -1, 2]のうちの一つのみある4をシングル数字を意味します。
また、恐らくですが、配列内にはシングル数字は1つしかないと思います。
>調べても理解できなかった
どのように説明されていて、何がわからなかったのでしょうか。
^を今はboolで使われるものだと先ほど認知しました。
そこでfor文内の処理a ^= nums[i];を処理すると
計算結果が-4 -> -5 -> -7 -> 6 -> 4と導き出されなぜ4がのこるのか、^がどのように作用しているかがわかりません。
![退会済みユーザー](https://ddjkaamml8q8x.cloudfront.net/profileImages/deletedUser/icnUserSample.jpeg)
singleのほうも日本語にして、「一つの数字」としたほうがわかりやすいかと思います。
わかりました、質問を修正します。
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー