不等于最大或最小元素 统计一下有多少个即可:
| class Solution { public: int countElements(vector<int>& a) { sort(a.begin(),a.end()); int n = a.size(); int ans = 0; for(int i=0;i<a.size();i++) { if(a[i]!=a[0]&&a[i]!=a[n-1]) ans++; } return ans; } };
|
双指针即刻,复杂度O(n)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution { public: vector<int> rearrangeArray(vector<int>& nums) { int l = 0,r = 0; int n = nums.size(); vector<int>ans; while(ans.size()!=n) { while(l<n) { if(nums[l]>0) { ans.push_back(nums[l]); l++; break; } else l++; }
while(r<n) { if(nums[r]<0) { ans.push_back(nums[r]); r++; break; } else r++; } } return ans; } };
|
遍历一下即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class Solution { public: vector<int> findLonely(vector<int>& a) { map<int,int>v2cnt; for(auto x:a) { v2cnt[x]++; } vector<int>ans; set<int>res; for(auto [val,cnt]:v2cnt) { if(cnt==1&&v2cnt[val+1]==0&&v2cnt[val-1]==0) res.insert(val); } for(auto x:res) ans.push_back(x); return ans; } };
|
简单题,直接二进制枚举然后O(n^2)check枚举的正确性即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution { public: int maximumGood(vector<vector<int>>& s) { int n = s.size(); int ans = 0; for(int i=0;i<(1<<n);i++) { vector<int>p(n); int odd = 0; for(int j=0;j<n;j++) { p[n-j-1] = (i>>j)%2; if(p[n-j-1]==1) odd++; } bool ok = true; for(int x=0;x<n;x++) { for(int y=0;y<n;y++) { if(p[x]==1) { if(s[x][y]==1&&p[y]==0) {ok = false;break;} if(s[x][y]==0&&p[y]==1) {ok = false;break;} } } if(!ok) break; } if(!ok) continue; else ans = max(ans, odd); } return ans; } };
|