class Solution { // 实际上 官解也没满足空间复杂度的要求 // 看到 一个挺秒的方法 // https://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=295&tags=&title=&difficulty=0&judgeStatus=0&rp=0&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D295 public: int MoreThanHalfNum_Solution(vector<int> numbers) { int n=numbers.size(); if(n<=2) { return numbers[0]; } int sum=0 ; // 1的求和 int ans; for(int i=0; i<n; ++i) { if(sum==0) { sum = 1; ans = numbers[i]; } else { if(numbers[i]==ans) // ana视为1 { sum++; } else // 其他数均视为 -1 { sum--; } } } return ans; } };
所谓性质构造