
剑指
lardoris928
这个作者很懒,什么都没留下…
展开
-
leetcode 66. 加一 加法进位 这题很好 vector的insert
class Solution {public: vector<int> plusOne(vector<int>& digits) { for(int i=digits.size()-1;i>=0;i--) { ++digits[i]; if(digits[i]!=10) //如果该位没有继续产生进位,则直接return 结果 ...原创 2021-08-17 12:24:20 · 144 阅读 · 0 评论 -
剑指 Offer 46. 把数字翻译成字符串(动态规划)(和青蛙跳台阶相似)
(这个0的情况是用来递归的 真正输入只有0个的时候输出是0->看代码)class Solution {public: int translateNum(int num) { string str = to_string(num); int len = str.size(); if(len < 2) return len; vector<int> dp(len+1); dp[1] = 1...原创 2021-07-24 17:24:31 · 104 阅读 · 0 评论 -
剑指 Offer 45. 把数组排成最小的数(快排)(lambda表达式)
class Solution {public: string minNumber(vector<int>& nums) { vector<string> strs; for(int i = 0; i < nums.size(); i++) strs.push_back(to_string(nums[i])); quickSort(strs, 0, strs.size() - 1);...原创 2021-06-30 10:32:38 · 150 阅读 · 0 评论 -
剑指offer44. 数字序列中某一位的数字(找规律题)
class Solution {public: int findNthDigit(int n) {//数位n long long start = 1;//每个digit起始的数字 int digit = 1;//位数 long long count = 9;//数位数量 while (n>count){ n -= count; start *= 10; digit++; count = start* digit * 9; }//这里做完定位到...原创 2021-06-29 20:58:47 · 90 阅读 · 0 评论 -
剑指 Offer 43. 1~n 整数中 1 出现的次数 leetcode233. 数字 1 的个数(没做)
原创 2021-06-29 20:16:44 · 106 阅读 · 0 评论 -
剑指offer42 连续子数组的最大和(leetcode 53)+子数组的打印
「力扣」第 53 题(最大子序和)是「力扣」第 124 题(二叉树的最大路径和)的线性版本,它们的状态设计思想和状态转移是类似的,希望大家能够通过本题题解进一步体会状态是如何想到的(即子问题的定义需要从哪些方面考虑)贪心这个暴力求解法也很妙啊:采取 贪心 策略,只要当前子段的和最大,就记录到res中,如果sum的结果小于0,必须将sum = 0,然后重新开始计算新的子段和,因为加上负数只会更小代码#include<iostream>#include<string>#i原创 2021-06-29 11:02:55 · 185 阅读 · 1 评论 -
2021/5/28 剑指 Offer 41. 数据流中的中位数(看书上笔记)
方法一:自己写的方法 使用sort函数 超出时间限制class MedianFinder {public: /** initialize your data structure here. */ vector<int> res; MedianFinder() { } void addNum(int num) { res.push_back(num); sort(res.begin(),res.end())..转载 2021-05-29 08:42:36 · 195 阅读 · 0 评论 -
2021/5/28 剑指 Offer 40. 最小的k个数 sort函数用法
class Solution {public: vector<int> getLeastNumbers(vector<int>& arr, int k) { vector<int> res; sort(arr.begin(),arr.end()); //arr.sort(); for(int i=0;i<k;i++){ res.push_back(arr[i].原创 2021-05-28 09:33:00 · 91 阅读 · 0 评论 -
leetcode77. 组合
https://leetcode-cn.com/problems/combinations/solution/77-zu-he-hui-su-fa-jing-dian-ti-mu-by-carlsun-2/vector<vector<int>> result; // 存放符合条件结果的集合vector<int> path; // 用来存放符合条件结果vector<vector<int>> result; // 存放符合..原创 2021-05-14 11:03:57 · 127 阅读 · 0 评论 -
2021/5/13 剑指 Offer 39. 数组中出现次数超过一半的数字
排序class Solution {public: int majorityElement(vector<int>& nums) { sort(nums.begin(), nums.end()); return nums[nums.size() / 2]; //因为出现频率大于n/2,所以排序后的中间位置必然是众数 }};作者:zrita链接:https://leetcode-cn.com/problems/.原创 2021-05-13 17:27:36 · 97 阅读 · 1 评论 -
2021/5/11 剑指 Offer 38. 字符串的排列
深度优先搜索class Solution {public: vector<string> permutation(string s) { vector<string> res; dfs(res,s,0); return res; } void dfs(vector<string> &res,string &s,int .原创 2021-05-12 10:06:16 · 60 阅读 · 0 评论 -
2021/4/29 剑指 Offer 34. 二叉树中和为某一值的路径
class Solution {public: vector<vector<int>> res;//存储答案 vector<int> path;//存储当前路径 vector<vector<int>> pathSum(TreeNode* root, int sum) {//主函数 helper(root ,sum);//调用递归函数 return res; }private...原创 2021-04-29 15:25:02 · 60 阅读 · 0 评论 -
2021/4/29 剑指 Offer 33. 二叉搜索树的后序遍历序列
我刚开始写的不完整版class Solution {public: bool verifyPostorder(vector<int>& postorder) { //数组的最后一个数是树的根节点 int length=postorder.size(); int lastele=postorder[length-1]; //左树所有值小于根节点 右树所有值大于根节点 vector<int&.原创 2021-04-29 11:13:56 · 59 阅读 · 0 评论 -
2021/4/27 剑指 Offer 32 - III. 从上到下打印二叉树 III(之字形)
运用reverse/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<.原创 2021-04-27 15:15:06 · 80 阅读 · 0 评论 -
2021/4/27 剑指 Offer 32 - II. 从上到下打印二叉树 II
打印的时候分行了这个方法太妙了吧 for循环的是上一层的父节点的数目 然后每个父节点按顺序压入他的左右孩子/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */c.原创 2021-04-27 12:07:11 · 73 阅读 · 0 评论 -
2021/4/27 剑指 Offer 32 - I. 从上到下打印二叉树(层序遍历)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int> levelOrde...原创 2021-04-27 10:54:53 · 73 阅读 · 0 评论 -
2021/4/22 剑指 Offer 31. 栈的压入、弹出序列
class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int> tmp; int i=0; for(auto s:pushed){ tmp.push(s);//stack没有push_back? ...原创 2021-04-22 11:35:07 · 66 阅读 · 0 评论 -
2021/4/22 剑指 Offer 30. 包含min函数的栈
class MinStack { stack<int> x_stack; stack<int> min_stack;public: MinStack() { min_stack.push(INT_MAX); } void push(int x) { x_stack.push(x); min_stack.push(std::min(min_stack.top(), x));//这句是主.原创 2021-04-22 10:00:51 · 91 阅读 · 0 评论 -
2021/4/21 剑指 Offer 29. 顺时针打印矩阵
第一种解法这个人真是个人才 coding的细节特别多#include<iostream>#include<algorithm>#include<vector>#include<unordered_map>using namespace std;class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix).原创 2021-04-21 22:24:10 · 98 阅读 · 0 评论 -
2021/4/21 剑指 Offer 28. 对称的二叉树
递归太妙了/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSymmetric(TreeNod.原创 2021-04-21 16:14:34 · 72 阅读 · 0 评论 -
2021/4/21 剑指 Offer 27. 二叉树的镜像
这两个题都是递归 有点上路了/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* mirro.原创 2021-04-21 15:24:17 · 81 阅读 · 0 评论 -
2021/4/21 剑指 Offer 26. 树的子结构(还没有自己写 这个递归解法特别简洁)
下面这个代码要多读读 非常简洁/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: boo...原创 2021-04-21 11:47:53 · 69 阅读 · 0 评论 -
2021/4/20 剑指 Offer 25. 合并两个排序的链表
递归:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { i.原创 2021-04-20 10:55:34 · 98 阅读 · 0 评论 -
2021/4/20 剑指 Offer 24. 反转链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* pre=null..原创 2021-04-20 10:12:09 · 92 阅读 · 0 评论 -
2021/4/18 剑指 Offer 22. 链表中倒数第k个节点
自己写的 debug了一次 是边界条件的问题/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* getKthFromEnd(ListNode* head, int .原创 2021-04-18 17:25:44 · 86 阅读 · 0 评论 -
2021/4/17 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
class Solution {public: //前奇数后偶数 vector<int> exchange(vector<int>& nums) { if(nums.size()<2) return nums; int i = 0; int j = nums.size() - 1; while (i != j){ if (isqo(nums[i]) == 1){ //前面指偶数 i++; } else.原创 2021-04-17 17:28:00 · 91 阅读 · 0 评论 -
2021/4/17 剑指 Offer 20. 表示数值的字符串(还没有写)
https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/solution/biao-shi-shu-zhi-de-zi-fu-chuan-by-leetcode-soluti/class Solution {public: enum State { STATE_INITIAL, STATE_INT_SIGN, STATE_INTEGER, ..原创 2021-04-17 11:21:03 · 90 阅读 · 0 评论 -
2021/4/17 剑指 Offer 19. 正则表达式匹配(道理看明白了 还没有下手 困难题)
https://leetcode-cn.com/problems/zheng-ze-biao-da-shi-pi-pei-lcof/solution/zhu-xing-xiang-xi-jiang-jie-you-qian-ru-shen-by-je/这个讲的也太清楚了class Solution { public boolean isMatch(String A, String B) { int n = A.length(); int m = B.l...原创 2021-04-17 10:14:16 · 103 阅读 · 0 评论 -
2021/4/16 leetcode 80. 删除有序数组中的重复项 II
这个可以自己画一下 特别巧妙class Solution {public: int removeDuplicates(vector<int>& nums) { int n = nums.size(); if (n <= 2) { return n; } int slow = 2, fast = 2; while (fast < n) { ...原创 2021-04-16 11:24:54 · 88 阅读 · 0 评论 -
2021/4/16 leetcode26. 删除有序数组中的重复项 快慢双指针 滑动窗
class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; if(nums.size()==1) return 1; int index=0; int i; for(i=1;i<nums.size();i++){ if(nums[i]!=..原创 2021-04-16 10:25:35 · 90 阅读 · 0 评论 -
2021/4/15 leetcode 19. 删除链表的倒数第 N 个结点
如果用快慢指针 快指针一次两步会不会一共单数个节点 快指针走不到最后一个? 有可能,毕竟快慢指针是在环形链表的判别中第一次见的那就直接两次遍历,第一次把链表的长度get到,第二次找要删除节点的上一个节点。注意边界条件/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr)..原创 2021-04-15 21:25:32 · 72 阅读 · 0 评论 -
2021/4/15 剑指 Offer 65. 不用加减乘除做加法
class Solution {public: int add(int a, int b) {//因为不允许用+号,所以求出异或部分和进位部分依然不能用+ 号,所以只能循环到没有进位为止 while(b!=0) {//保存进位值,下次循环用 int c=(unsigned int)(a&b)<<1;//C++中负数不支持左移位,因为结果是不定的//保存不进位值,下次循环用, ...原创 2021-04-15 17:16:13 · 79 阅读 · 0 评论 -
2021/4/13 leetcode83. 删除排序链表中的重复元素
这个题和剑指上不太一样 剑指上把所有重复元素都删了 这个只保留一个答案:class Solution {public: ListNode* deleteDuplicates(ListNode* head){ if(head == nullptr) return nullptr; ListNode* pre = head ;ListNode* cur = head->next; while(cur != nullptr){ ..原创 2021-04-13 16:42:53 · 84 阅读 · 0 评论 -
2021/4/13 剑指 Offer 62. 圆圈中最后剩下的数字 周赛236
环形链表: // 定义环形链表 std::list<int> numList; // 将数插入到链表中 for (int i = 0; i < n; i++) { numList.push_back(i); } // 定义当前遍历指针 auto curIter = numList.begin(); // 遍历链表中的数 while (numList.size() > 1) { .原创 2021-04-13 14:15:37 · 70 阅读 · 0 评论 -
2021/4/11 剑指 Offer 18. 删除链表的节点
)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteNode(ListNode* head, int val) { if(head.原创 2021-04-11 10:06:26 · 94 阅读 · 0 评论 -
2021/4/8 剑指 Offer 17. 打印从1到最大的n位数(大数道理懂了 还没写过)
https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/solution/fei-zi-jie-ti-ku-jian-17-jian-dan-da-yin-cong-1dao/这个多看看 讲的还行吧力扣把他当简单题了 所以应该没有考虑大数问题:(常规解法 面试不能)class Solution {public: vector<int> printNumbers(int n) { ..原创 2021-04-10 11:40:11 · 92 阅读 · 0 评论 -
2021/4/7 剑指 Offer 16. 数值的整数次方(这个递归有点想不太通)
//递归求解,每次都求N/2,直到N为0或1class Solution {public: double myPow(double x, int n) { if (n == 0) {return 1;} if (n == 1) {return x;} long long N = n;//因为如果 n = -2^31,那么后面 num = -num = 2^31,用 int 的话会溢出 if (N < 0) { N = -N; x = .原创 2021-04-07 22:13:18 · 88 阅读 · 0 评论 -
2021/4/7 剑指 Offer 15. 二进制中1的个数
此题看书上笔记最优解class Solution {public: int hammingWeight(uint32_t n) { int count=0; while(n){ ++count; n=n&(n-1); } return count; }};非最优解:class Solution {public: int hammingWeight(u原创 2021-04-07 21:14:14 · 66 阅读 · 0 评论 -
2021/4/7 剑指 Offer 14- II. 剪绳子 II
这一题已经不能用动态规划了,取余之后max函数就不能用来比大小了。只能用贪心了这个解法特别清楚class Solution {public: int cuttingRope(int n) { if (n <= 3) return 1 * (n - 1); //长度小于等于3的情况 long long res = 1; if (n % 3 == 1) res = 4, n -= 4; //余数为1且总长度原创 2021-04-07 17:23:35 · 61 阅读 · 0 评论 -
2021/4/6 剑指 Offer 14- I. 剪绳子
方法一:自下而上动态规划 + 记忆化:两个循环class Solution {public: int cuttingRope(int n) { if(n <= 3) return n - 1; // 当绳子的总长度<=3时,做特殊情况处理 //长度<=3时 必须要剪 所以会小 但是一旦>3就不用动长度3以下的绳子了 vector<int> res(n + 1, 0); // res[i]表示长度为i的绳子剪成.原创 2021-04-07 11:30:00 · 78 阅读 · 0 评论