文章分类 - 五月集训
摘要:链表 1. 1290. 二进制链表转整数 思路: 遍历链表,将二进制数转化未十进制数。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : v
阅读全文
摘要:矩阵 1. 1351. 统计有序矩阵中的负数 思路: 大水题,直接遍历数组统计即可 int countNegatives(int** grid, int gridSize, int* gridColSize){ int ans = 0; int r = gridSize, col = gridCol
阅读全文
摘要:位运算 1. 191. 位1的个数 思路: 利用位运算统计1的个数 int hammingWeight(uint32_t n) { int ans = 0; while (n) { ans += (n&1); n >>= 1; } return ans; } 2. 461. 汉明距离 思路: 直接位
阅读全文
摘要:二分查找 1. 35. 搜索插入位置 思路: 对每个数平方后排序即可 class Solution { public: bool check(int ans, int target) { if (ans >= target) return true; return false; } int Bina
阅读全文
摘要:前缀和 1. 1480. 一维数组的动态和 思路: 求数组前缀和 class Solution { public: vector<int> runningSum(vector<int>& nums) { int n = nums.size(); for (int i = 1; i < n; i++)
阅读全文
摘要:哈希表 1. 1512. 好数对的数目 思路: 利用哈希表的方式索引,将每个数字与其出现次数建立映射。然后利用数学知识求出好数对的数目。某个数出现一次时对ans无影响,当再出现一个与当前出现的数组成一组,第三个出现的数与当前两个构成两个新的组,依次累加即可获得结果。 class Solution {
阅读全文
摘要:滑动窗口 1. 1984. 学生分数的最小差值 思路: 先对nums排序,利用长度为k的滑动窗口在数组内向右平移,每次算出窗口左右端的差即为分数差值,取其中最小值返回即可。 class Solution { public: int minimumDifference(vector<int>& num
阅读全文
摘要:双指针 1. 917. 仅仅反转字母 思路: left往右找字母,right往左找字母,两个都找到后交换位置,继续移动指针 class Solution { public: string reverseOnlyLetters(string s) { int len = s.length(); int
阅读全文
摘要:贪心 1. 1221. 分割平衡字符串 思路: 分割成尽可能多的字符串,从头开始遍历字符串,每遇到一个平衡字符串,结果加一。利用一个left_cnt记录出现的单个L的数量,遇到L ⇒ left_cnt++,遇到R ⇒ left_cnt--,当left_cnt == 0 时即L,R的数量相等,为一个平
阅读全文
摘要:数组 1. 增量元素之间的最大差值 题目: 思路: 考虑到数据范围,O(n^2)暴力枚举 int maximumDifference(int* nums, int numsSize){ if (numsSize <= 1) return -1; int maxn = -1; for (int i =
阅读全文
摘要:字符串 1. 500. 键盘行 思路: 参考星球兴磊大佬的hash方法,将每个字母与键盘的行数对应进行索引 class Solution { public: vector<string> findWords(vector<string>& words) { // 每个字母对应的行数 int my_h
阅读全文
摘要:排序 1. 977. 有序数组的平方 思路: 对每个数平方后排序即可 class Solution { public: vector<int> sortedSquares(vector<int>& nums) { int n = nums.size(); vector<int> ret; for (
阅读全文
posted @ 2022-05-03 11:59
番茄元