试图对力扣简单题重拳出击,结果发现自己基础还没打牢,特此一回顾。
- vecotr使用pop_back()之后的变化?
示例代码如下:
int main(){
vector arr;
arr.push_back(12);
arr.push_back(16);
cout<<"arr.size()="<
之前我以为pop.back()之后,如果还访问arr[1]就越界了,至少会给我报一个错;没想到竟然是仍然可以访问的,只是这个arr[1]不再等于arr.back()了
此外 关于vector的(其中一种)排序:
sort(arr.begin(), arr.end());
- 1184. 公交站间的距离
这道题,我竟试图用双指针完成它!(虽然没问题)
我也不知道这个解法算不算双指针,应该不算吧……感觉只是参考了循环队列的结构:
class Solution {
public:
int distanceBetweenBusStops(vector& distance, int start, int destination) {
int n=distance.size();
int ans_head=0, ans_rear=0;
int i=0;
do{
ans_head+=distance[(start+i)%n];
i ++;
}while((start+i)%n!=destination);
i=0;
do{
i ++;
ans_rear+=distance[(start+n-i)%n];
}while((start+n-i)%n!=destination);
return min(ans_head, ans_rear);
}
};
然后我去看看大家的题解……绝了,只需要判断一下start与destination的大小(如果start大于destination的话就交换一下),然后继续计算……
感觉自己过于愚蠢
- 异或
我一直没学好异或的概念,也没放心里去……直到遇见这道题:
136. 只出现一次的数字
原来用异或的以下3条定律就可以快速解决了!!!!!!!!!
1. 交换律
2. 相同的数异或,结果为0
3. 任何数异或0,结果仍为该数
异或^规律总结_一只java小白白的奋斗史的博客-CSDN博客_异或规则
真的绝
-
剑指 Offer 53 - II. 0~n-1中缺失的数字
这题,如果让我自己去想的话,我会反复遍历数组,直到发现该数找不到,然后返回该数;感觉这个时间复杂度得有O(n^2)了。
然后我看到清新脱俗的解法:
先用高斯求和算出:在没有缺数的情况下,总和应该为多少;然后再减去数组的所有数;最后剩下的那个数即为缺失的数。
时间复杂度为O(n)。
我还是太菜了



