ソートされた配列でLeetCode 540単一の要素

著作権:コードワードは容易ではない、ソースを明記してください。https://blog.csdn.net/qq_24309981/article/details/90241534

説明1

説明は、
すべての要素が一度だけ表示される一つの要素を除いて、正確に2回出現し、整数のみからなるソートされた配列を考えます。一度だけ表示され、この単一の要素を検索します。

例1

  • 入力:[1,1,2,3,3,4,4,8,8]
  • 出力:2

例2

  • 入力:[3,3,7,7,10,11,11]
  • 出力:10

注意

  • あなたのソリューションは、時間とO(1)スペース(n個のログ)Oで実行する必要があります。

2コード

#include <iostream>
#include <vector>
using namespace std;

//方法一
//int singleNonDuplicate(vector<int>& nums) {
//	int res = 0;
//	for (const auto& num : nums)	res ^= num;
//	return res;
//}

//方法二
int singleNonDuplicate(vector<int>& nums) {
	int res = 0;
	if (nums.size() % 2)
	{
		res = nums[nums.size() - 1];
		for (int i = 0; i < nums.size() - 1; i += 2)
		{
			if (nums[i] ^ nums[i + 1])
			{
				res = nums[i];
				break;
			}
		}
	}
	return res;
}

int main()
{
	vector<int> nums = { 1,1,2 };
	int res = singleNonDuplicate(nums);
	cout << res << endl;
	system("pause");
    return 0;
}

3について説明しました

この方法は:論理ゲートXORゲート、非単調増加アレイも当てはまる場合でも、
方法2:単調増加のアレイにのみ適用可能。

おすすめ

転載: blog.csdn.net/qq_24309981/article/details/90241534