随笔分类 - 31天刷题打卡
摘要:1.剑指 Offer 14- II. 剪绳子 II 1 class Solution { 2 public: 3 int cuttingRope(int n) { 4 if(n <= 3) return n - 1; 5 long res = 1; 6 while(n > 4){ 7 n -= 3;
阅读全文
摘要:1.剑指 Offer 17. 打印从 1 到最大的 n 位数 1)直接列举(执行用时比分治短) 1 class Solution { 2 public: 3 vector<int> printNumbers(int n) { 4 vector<int> res; 5 int num = 0; 6 f
阅读全文
摘要:剑指 Offer 49. 丑数 1)会超时,数据范围只能到1200几 1 class Solution { 2 public: 3 int nthUglyNumber(int n) { 4 int k = 0,res; 5 for(int i = 1;;i ++){ 6 if(isUglyNum(i
阅读全文
摘要:1.剑指 Offer 37. 序列化二叉树 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * Tre
阅读全文
摘要:1.剑指 Offer 59 - I. 滑动窗口的最大值 单调队列 1 class Solution { 2 public: 3 vector<int> maxSlidingWindow(vector<int>& nums, int k) { 4 vector<int> res; 5 deque<in
阅读全文
摘要:剑指 Offer 67. 把字符串转换成整数 注意一下出界的情况 1 class Solution { 2 public: 3 int strToInt(string str) { 4 int len = str.size(); 5 if(len == 0) return 0; 6 int i =
阅读全文
摘要:1.剑指 Offer 29. 顺时针打印矩阵 方形盘龙问题,思路:在数组外面围一堵矩形的墙,碰到墙就掉头 代码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define wall -1 4 #define a 0 5 int main() { 6 i
阅读全文
摘要:1.剑指 Offer 14- I. 剪绳子 2=1+1,3=1+2, 4 = 2 + 2,5 = 3 + 2,6 = 3 + 3,7 = 3 + 4,8 = 3 + 5 = 3 + 3 + 2,9 = 5 + 4 = 3 + 2 + 4. . . . . . 可以发现,其实从4开始,每个数字都可以由
阅读全文
摘要:1.剑指 Offer 39. 数组中出现次数超过一半的数字 1)排序后位于中间的数就是我们要求的数 1 class Solution { 2 public: 3 int majorityElement(vector<int>& nums) { 4 sort(nums.begin(),nums.end
阅读全文
摘要:关于异或:1.任何数和0异或都等于那个数本身(a^0 = a),因为 0^1 = 1, 0^0 = 0 2.任何数和1异或都相当于按位取反,因为 1^1 = 0, 1^0 = 1 3.“还原性”(ps:个人理解): 举个栗子~ :A^B^A= B : A^B = m,m^A = B(m第二次异或同一
阅读全文
摘要:1.剑指 Offer 15. 二进制中 1 的个数 与1同位与判断最低位是否是1,判断完右移继续判断下一个 1 class Solution { 2 public: 3 int hammingWeight(uint32_t n) { 4 int cnt = 0; 5 while(n){ 6 if(n
阅读全文
摘要:1.剑指 Offer 07. 重建二叉树 i.根据先序遍历(根节点 + 左子树 + 右子树)和 中序遍历(左子树 + 根节点 + 右子树)求出二叉树的思路就不写了(先序、中序、后序说的是根节点的位置顺序) ii.dfs(preroot,inleft,inright): preroot:先序遍历时的根
阅读全文
摘要:1.剑指 Offer 64. 求 1 + 2 + … + n 1 class Solution { 2 public: 3 int sumNums(int n) { 4 n > 1 && (n += sumNums(n - 1)); 5 return n; 6 } 7 }; 2.剑指 Offer 6
阅读全文
摘要:1.剑指 Offer 55 - I. 二叉树的深度 1)dfs 取左、右子树高度的最大值 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * T
阅读全文
摘要:1.剑指 Offer 40. 最小的 k 个数 1 class Solution { 2 public: 3 vector<int> getLeastNumbers(vector<int>& arr, int k) { 4 vector<int> res; 5 sort(arr.begin(),ar
阅读全文
摘要:1.剑指 Offer 45. 把数组排成最小的数 建议先去看力扣k神的题解,不知道快排原理的可以去百度一下 i.把字符串化后的两个数字拼在一起有两种拼法,通过比较两种拼法的大小来判断两个数字的“大小” 妙!!! ii.通过append函数把字符串连接起来 1 class Solution { 2 p
阅读全文
摘要:1.剑指 Offer 34. 二叉树中和为某一值的路径 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7
阅读全文
摘要:1.剑指 Offer 12. 矩阵中的路径 dfs !!!这道题visited[x][y]不可以用visited[x * m + y]代替 1 class Solution { 2 public: 3 int next[4][2] = {-1,0,0,1,1,0,0,-1}; 4 int visit
阅读全文
摘要:1.剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 1 class Solution { 2 public: 3 vector<int> exchange(vector<int>& nums) { 4 int n = nums.size(); 5 int l = 0,r = n - 1;
阅读全文
摘要:1.剑指 Offer 25. 合并两个排序的链表 把l2链合并到l1链上 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(
阅读全文