- 博客(18)
- 收藏
- 关注
原创 c++数据结构 有效的数独、矩阵置零
36. 有效的数独 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: bool isValidSudoku(vector<vector<char>>& board) { int row[9][9]; int line[9][9]; int box[9][9]; for (int i = 0; i < 9; i++) { for (int j =.
2021-12-12 16:31:57
670
1
原创 c++数据结构350、121
350. 两个数组的交集 II - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int>nums3; int n=0; sort(nums1.begin(),nums
2021-12-10 20:46:12
591
1
原创 c++数据结构217、53
217. 存在重复元素 - 力扣(LeetCode) (leetcode-cn.com)自己做的两种方法,一个是排序判断,一个是集合。class Solution {public: bool containsDuplicate(vector<int>& nums) { sort(nums.begin(),nums.end()); for(int i=0;i<nums.size()-1;i++) if(nums[i.
2021-12-08 16:41:33
687
原创 c++位运算190、136
190. 颠倒二进制位 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t ans=0; //进制的本质 int i=32; while(i--) { ans<<=1; ans+=n&1; .
2021-12-03 13:18:12
262
原创 c++231、191
231. 2 的幂 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: bool isPowerOfTwo(int n) { if (n==1)return true; if(n%2==1||n<=0)return false; while(n!=1) { n=n/2; if(n==0||abs(n)==1)return true;
2021-12-03 13:12:50
67
原创 c++动态规划70、198、120
70. 爬楼梯 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: int climbStairs(int n) { if(n<=2){ return n; } int i1=1; int i2=2; for(int i=3;i<=n;i++) { int temp=i1+i2.
2021-12-02 11:32:56
55
原创 c++回溯 77、46、784
今天学习了回溯的算法。先记录一下模板:void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 }}77. 组合 - 力扣(LeetCode) (leetcode-cn.c
2021-12-01 11:39:30
868
原创 c++leetcode21、206
21. 合并两个有序链表 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==nullptr) return l2; if(l2==nullptr) return l1; ListNode*head; if (l1->val>l2->
2021-11-30 11:57:38
356
原创 c++leetcode542,994
542. 01 矩阵 - 力扣(LeetCode) (leetcode-cn.com)今天的题有点小难,但是解法很多。DP解法:class Solution {public: vector<vector<int>> updateMatrix(vector<vector<int>>& mat) { int m=mat.size(),n=mat[0].size(); vector<vector.
2021-11-29 13:36:21
289
原创 c++leetcode617/116
https://leetcode-cn.com/problems/merge-two-binary-trees/最简单的递归解法, 对一个节点进行合并之后,对左右子节点分别进行合并。class Solution {public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if(!root1)return root2; if(!root2)return root1; Tr
2021-11-28 12:35:18
461
原创 c++深度优先搜索与广度优先搜索leetcode733\695
733. 图像渲染 - 力扣(LeetCode) (leetcode-cn.com)大佬这句话写的好好,引用一下!广度和深度的核心思想:广度:先把当前结点完全扩展开。深度:先跳到下一个结点广度优先算法就是给多个方向,向四周发散。 const int dx[4] = {-1, 0, 1, 0}; const int dy[4] = {0, -1, 0, 1}; vector<vector<int>> floodFill(vector<ve.
2021-11-27 18:35:35
375
原创 c++滑动窗口leetcode3\567
3. 无重复字符的最长子串 - 力扣(LeetCode) (leetcode-cn.com)写的不太好的一版,内存占用太多,时间太长。int lengthOfLongestSubstring(string s) { int n=0;int l=0; int p=0;int q=0;set<char> ss; while(q<s.size()&&p<s.size()){ .
2021-11-26 20:51:39
2532
原创 c++双指针876、19
876. 链表的中间结点 - 力扣(LeetCode) (leetcode-cn.com)两种思路,一种比较好想的是先遍历链表长度,然后长度除以2,再次遍历得到剩下的链表;另一种就是快慢指针,当快指针到了尾部,慢指针刚好到中间。class Solution {public: ListNode* middleNode(ListNode* head) { ListNode* p=head;ListNode* q=head; while(q!=nullptr&.
2021-11-25 11:14:47
340
原创 c++双指针leetcode344、557
344. 反转字符串 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: void reverseString(vector<char>& s) { int left=0,right=s.size()-1; while(left<=right) { char temp=s[left]; s[left]=s[rig
2021-11-24 13:26:50
624
原创 c++双指针leetcode283、167
283. 移动零 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: void moveZeroes(vector<int>& nums) { int i=0;int j=0; while(j<nums.size()) { if(nums[j]) { nums[i]=nums[j]
2021-11-23 13:42:48
444
原创 c++双指针(1)
977. 有序数组的平方 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: vector<int> sortedSquares(vector<int>& nums) { vector<int> r(nums.size(),0); int i=0,j=nums.size()-1; int k=j; while(i<=j.
2021-11-22 17:27:36
657
原创 c++二分查找(2)
278. 第一个错误的版本 - 力扣(LeetCode) (leetcode-cn.com)// The API isBadVersion is defined for you.// bool isBadVersion(int version);class Solution {public: int firstBadVersion(int n) { int left=1; int right=n; while(left<right.
2021-11-20 12:37:55
207
2
原创 c++二分查找
第一题704. 二分查找 - 力扣(LeetCode) (leetcode-cn.com)比较基础的题,基本上了解二分查找的原理,然后套用模板就能做出来。int search(vector<int>& nums, int target) { int left=0; int right=nums.size()-1; int ans=0; while(left<=right) { .
2021-11-19 14:39:57
470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人