LeetCode | 刷题笔记 | 解题思路

题的类别

LeetCode | 刷题笔记 | 解题思路_第1张图片

刷题:写代码前需要明确的点:

  • 题目具体表达的含义:
  • 序列是有序的?大小写敏感?数据规模?(考虑时间复杂度)
  • 边界条件:空串属于处理范围?
  • 索引是从0还是1开始的?
  • 如果有多解,考虑输出顺序?任意输出一个解?
    如果无解,返回0?
  • 合理运用断言assert

剑指 offer

LeetCode | 刷题笔记 | 解题思路_第2张图片

03 数组中重复的数字

  • 建立一个bool类型的数组,下标即为要判断的数字。
  • 不存在为false,存在一次为true;重复的话,判断其值是否为true;

04 二维数组中的查找

  • 初始化vector > nums二维数组(n*m大小)。
  • 随时判断访问数组nums[i][j]是否会越界i
  • 判断二维数组(若是[][[]])是否为空。
  • vector容器判空:
    如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false

05 替换空格

  • 读取一行写入字符串strgetline(cin, str);

06 从尾到头打印链表

指针为空时的判断:

if(!ptr){

}

10-I 斐波那契数列

  • 使用数组存储备用数据。

15 一个数的二进制中1的个数

  • 使用&1操作
  • 然后二进制右移一位操作
#include
using namespace std;

class Solution {
public:
   int hammingWeight(uint32_t n) {
       int ans = 0;
       while(n!=0){
           ans += n&1;
           n >>= 1;
       }
       return ans;
   }
};


int main(){
   int n = 9;
   int ans = Solution().hammingWeight(n);
   cout << ans;
   return 0;
}

检查链表中是否有环

  • 借助数组,把访问过的结点添加进数组,当访问到一个新结点时,判断数组中是否存在该结点,存在就说明有环。

你可能感兴趣的:(#,数据结构,刷题,面试)