题目描述:
Given a string s representing an expression, implement a basic calculator to evaluate it.
Example 1:
Input: s = “1 + 1”
Output: 2
Example 2:
Input: s = " 2-1 + 2 "
Output: 3
Example 3:
Input: s = " 2-1 + 2 "
Output: 3
Constraints:
1 <= s.length <= 3 * 105
s consists of digits, ‘+’, ‘-’, ‘(’, ‘)’, and ’ '.
s represents a valid expression.
Time complexity: O(n)
Time complexity: O(n)
class Solution {
public List<Integer> majorityElement(int[] nums) {
List<Integer> res = new ArrayList<>();
int c1 = 0;
Integer n1 = nums[0];
int c2 = 0;
Integer n2 = nums[0];
for (int n: nums) {
if(n1 != null && n1 == n){
c1++;
}else if(n2 != null && n2 == n){
c2++;
}else if(c1 == 0){
c1++;
n1 = n;
}else if(c2 == 0){
c2++;
n2 = n;
}else{
c1--;
c2--;
}
}
c1 = 0;
c2 = 0;
for (int n: nums) {
if(n == n1){
c1++;
}else if(n == n2){
c2++;
}
}
int n = nums.length;
if(c1 > n/3){
res.add(n1);
}
if(c2 > n/3){
res.add(n2);
}
return res;
}
}