array & string LeetCode 66. Plus One LeetCode 498.Diagonal Traverse LeetCode 54.Spiral Matrix LeetCode 59.Spriral Matrix II LeeteCode 118. Pascal’s Triangle

LeetCode 724. Find Pivot Index

先求数组总和sum,然后维护一个当前数组之和 cursum, 然后用sum 减去 当前遍历到的元素,判断得到的结果是否等于2*cursum 。

  • 等于 , 当前位置即pivot
  • 否则, 将当前数字加到cursum中, 继续for循环 遍历数组。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class  {
public:
int pivotIndex(vector<int>& nums) {
int sum = 0;
int cursum = 0;
for (int num : nums) {
sum += num;
}
for (int i = 0; i < nums.size(); i++) {
if (sum - nums[i] == 2*cursum) {
return i;
}
cursum += nums[i];
}
return -1;
}
};

维护两个变量maxnsec 分别记录数组的最大值和次大值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class  {
public:
int dominantIndex(vector<int>& nums) {
int maxn = INT_MIN, idx = -1, sec = INT_MIN;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] > maxn) {
sec = maxn;
maxn = nums[i];
idx = i;
} else if(nums[i] > sec){
sec = nums[i];
}
}
return sec * 2 > maxn ? -1 : idx;
}
};

这里 使用 INT_MIN或 INT_MAX 会 出现问题

LeetCode 66. Plus One

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

class {
public:
vector<int> plusOne(vector<int>& digits) {
for (int i = digits.size() - 1; i >= 0; i--) {
if (digits[i] != 9) {
digits[i] += 1;
break;
}
digits[i] = 0;
}
if (digits[0] == 0) {
digits.insert(digits.begin(), 1);
}
return digits;
}
};

insert函数

将元素插入到迭代器所指定的位置之前 (C++ primer P307)

循环中break的使用

LeetCode 498.Diagonal Traverse

1
2


LeetCode 54.Spiral Matrix

1
2

`

LeetCode 59.Spriral Matrix II

1
https:

LeeteCode 118. Pascal’s Triangle

1
2