自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坚不萌

从必然人走向自由人。

  • 博客(224)
  • 收藏
  • 关注

原创 [leetcode]052-N-Queens II[递归回溯]

1.原题https://leetcode.com/problems/n-queens-ii/2. 思路这题和上道题51思路是一样的,只不过,搜索到结果后不需要保存,只需要计数就可以了。3. 源码class Solution {public: int totalNQueens(int n) { dim = n; vector<...

2019-08-19 10:45:44 184

原创 [leetcode]051-N-Queens[递归回溯]

1. 原题https://leetcode.com/problems/n-queens/2. 思路题意,经典的n皇后问题。规则是,同一行,列和两条斜对角线不能有两个皇后。算法:递归回溯。从第一行开始,选择一个位置,验证是否符合条件,然后继续递归下一行。注意,判断条件时,因为我们是按行从上往下递归的,所以同一行不可能有两个皇后。3. 源码class Solution {...

2019-08-18 10:59:51 532

原创 [leetcode]050-Pow(x, n)[数理逻辑-递归]

1. 原题https://leetcode.com/problems/powx-n/2. 思路题意,求一个数的n次方。把n次方分半,看成求两个n/2次方。即用递归求解。3. 源码import mathclass Solution: def myPow(self, x: float, n: int) -> float: if (n==0):...

2019-08-16 11:11:44 241

原创 [leetcode]049-Group Anagrams[字符串处理]

1. 原题https://leetcode.com/problems/group-anagrams/2. 思路题意:给出多个字符串,相同字符构成的字符串分到一块。算法:每个字符串先排序,排序好的字符串相同就放到一起。这时,要用到map,来存放索引。3. 源码class Solution {public: vector<vector<string&...

2019-08-15 12:30:56 154

原创 [leetcode]048-Rotate Image[数学逻辑]

1. 原题https://leetcode.com/problems/rotate-image/2. 思路给出一个方阵,将其顺时针旋转90度后,输出结果。限定条件,空间复杂度为常量。显然,最容易想到的是一圈圈的交换元素旋转。不过代码实现有点复杂。可以慢慢观察,矩阵先以副对角线交换后,再水平居中翻转,就能实现。也可以先主对角线,再竖直居中对调。3. 源码clas...

2019-08-14 13:20:37 143

原创 [leetcode]047-Permutations II[全排列-递归]

1. 原题https://leetcode.com/problems/permutations-ii/2. 思路和上题类似,求全排列,不过给出的元素存在重复值。算法:递归。关键是如何去重。1. 首先进行排序,遇到前后相等的,只递归第一次就行。2. 递归时的数组参数按值传入,不应按引用。以免子递归搞乱顺序。3. 源码class Solution {public:...

2019-08-13 14:20:26 110

原创 [leetcode]046-Permutations[全排列-递归]

1. 原题https://leetcode.com/problems/permutations/2. 思路题意:输出一个序列的全排列。显然,最简单的就是递归求法。比如[1, 2, 3, 4],那就求:1 + [2, 3, 4]的全排列2 + [1, 3, 4]的全排列3 + [1, 2, 4]的全排列4 + [1, 2, 3]的全排列3. 源码clas...

2019-08-12 14:05:40 116

原创 [leetcode]045-Jump Game II[贪心算法]

1. 原题https://leetcode.com/problems/jump-game-ii/2. 思路题意:求出最小步数,使其到达最远距离。显然,这可以利用贪心算法,局部最优得出全局最优。在每次遍历中,基于当前位置能够到达的最远距离,判断在该范围内,下次能到达的最远距离,更新该距离即可。3. 源码class Solution {public: int...

2019-08-11 15:13:16 119

原创 [leetcode]044-Wildcard Matching[动态规划]

1. 原题https://leetcode.com/problems/wildcard-matching/2. 思路题意:判断模式串和目标串是否匹配解法有多种,可以用递归。我最初写的递归,不过会超时。字符串匹配问题通用方法是动态规划。数组dp[i][j]表示p[i]之前的字符串是否匹配s[j]之前的字符串。边界dp[0][0]=1,显然目标串作为内循环方便。3.源码...

2019-08-09 20:19:14 161

原创 [leetcode]043-Multiply Strings[数理逻辑]

1. 原题:https://leetcode.com/problems/multiply-strings/2. 思路题意,给出两个数(字符串形式),求出相乘后的结果。其实就是大整数的乘法。逐位相乘就好。3. 源码class Solution {public: string multiply(string num1, string num2) { ...

2019-08-07 15:58:07 109

原创 [leetcode]042-Trapping Rain Water[数理逻辑]

1. 原题https://leetcode.com/problems/trapping-rain-water/2. 思路题意,求出柱体间能够容纳的水面积。考查逻辑能力。我们找到一个居中的最大值,然后从两边向中间遍历累加值即可。3. 源码# find the max value of center, then collect water from side to cen...

2019-08-06 16:03:20 114

原创 [leetcode]041-First Missing Positive[数理逻辑]

1. 原题https://leetcode.com/problems/first-missing-positive/2. 思路题意:给出一个数组,输出数组中未包含的最小正数。如果题目未限定空间复杂度O(1), 那么我们很容易做出来。直接开个含N+1元素的数组判断即可。现在,只有多想一想。利用原数组的操作,也可以求出来。毕竟,输出结果最大为n+1. 那么,我们可以把每一个(1...

2019-08-05 16:10:28 125

原创 [leetcode]040-Combination Sum II[dfs回溯]

1. 原题https://leetcode.com/problems/combination-sum-ii/2. 思路题意:此题和39题基本一样。区别是结果中的元素不能重复。既然不能重复,如何做到呢?我们可以先对序列排序,dfs时,紧挨着的候选序列里的元素一样时,跳过。因为,第一次已经遍历过所有解空间,第二次再遍历会出现相同的求解子序列。算法:依然是dfs回溯已AC...

2019-08-03 13:41:50 81

原创 [leetcode]039-Combination Sum[dfs剪枝]

1. 原题https://leetcode.com/problems/combination-sum/2. 思路题意:给定一个序列和数值。从序列中选出一部分元素,使其和等于给定的目标值。这题本质上是背包问题。由于题目要输出所有的情况,这里直接采用dfs回溯算法求解。已AC。3. 源码class Solution {public: vector<vect...

2019-08-02 19:10:43 130

原创 [leetcode]038-Count and Say[字符串]

1. 原题https://leetcode.com/problems/count-and-say/2. 思路题意不是很好懂。题目说的是,给定n,输出上一次可以读出的字符串。默认n=1,字符串‘1’, 那么n=2, 上一次是一个1, 所以输出'11'。又比如 n=4, 对应字符串‘1211’, 那么n=5, 上一次里有一个1,一个2, 两个1, 所以输出'111221'显然,...

2019-07-31 15:26:07 94

原创 [leetcode]037-Sudoku Solver[递归]

1. 原题https://leetcode.com/problems/sudoku-solver/2. 思路题意:解决一个数独问题,输出结果。题目保证答案唯一。数独问题一般都是用暴力破解思想,递归求解。对每一个空格,依次填入1~9, 判断是否符合数独定义,递归求解下一个空格。直到填完最后一个空格。已AC.3. 源码class Solution {publ...

2019-07-30 18:13:33 80

原创 [leetcode]036-Valid Sudoku[数理逻辑]

1. 原题https://leetcode.com/problems/valid-sudoku/2. 思路题意:判断数独是否符合给定的条件。数据结构用map或set存储,利用它们的性质可快速判断是否重复。每行和每列容易判断,9个小九宫格不是很容易判断。关键找出第i个小九宫格时的下标。自己用笔画一画就出来了。访问第i行j次时, 其应该访问的下标是 A[i/3*3+j/3]...

2019-07-29 15:20:30 75

原创 [leetcode]035-Search Insert Position[二分查找]

1. 原题https://leetcode.com/problems/search-insert-position/2. 思路题意:比较简单,返回给定值在有序序列的索引。直接用二分查找即可。3. 源码class Solution {public: int searchInsert(vector<int>& nums, int target) ...

2019-07-28 19:22:59 96

原创 [leetcode]034-Find First and Last Position of Element in Sorted Array[二分查找]

1. 原题https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/2. 思路题意:给出一个有序序列和一个目标值,返回目标值下标的最小和最大值。时间复杂度要求O(logn),显然要用二分查找。存在多个重复值,利用二分法分别得到最小和最大索引即可。3. 源码...

2019-07-28 09:26:33 67

原创 [20190507]VS下多个方案如何调试多个DLL多个exe

1. 背景在vs里,经常用c++编写dll供其它程序调用。由于dll不能直接运行,所以调试dll有些麻烦。2. 解决方法其实,dll也是程序。本质上,只要dll被其它程序调用了,就可以F5进行调试。1)单元测试时调试dll。这种情况,我们会写个单元测试程序,会生成exe。而单元测试里引用了dll。如图,方案useDll是测试用,这个时候,我们将useDll右键设为启...

2019-05-07 21:32:40 979

原创 [leetcode]033-Search in Rotated Sorted Array[二分查找]

1. 原题https://leetcode.com/problems/search-in-rotated-sorted-array/2. 思路题意:一个有序列表在某个位置前后两部分被调换,求出给定值的索引下标。思路:题目要求时间复杂度log(n), 显然要用二分法。我们依然考虑中间值n[mid], 如果其小于最右值,那么右部分是有序的。否则左部分有序。这样不断在某部分查找即...

2019-04-27 15:35:16 102

原创 [leetcode]032-Longest Valid Parentheses[动态规划]

1. 原题https://leetcode.com/problems/longest-valid-parentheses/submissions/2. 思路题意:给出一串由括号组成的字符串,求出最长匹配的子串思路:比较难。容易想到的方法就是遍历字符串。利用栈的思想,找出匹配的括号位置,不断更新匹配长度。另外的方法就是动态规划了。dp[i]表示以下标i结尾时的最长长度。假...

2019-04-21 21:27:32 78

原创 [leetcode]031-Next Permutation[数学逻辑][python]

1. 原题https://leetcode.com/problems/next-permutation/2. 思路题意:求出给定序列的下一个序列。思路:首先要理解什么是元素的全排列。一组数的全排列有多个方法获得。题目要求的是字典序的排列组合。对于字典序的排列,两个相邻的排列要求前缀尽可能多。所以下一个排列如何求呢? 其实全排列过程是从后向前逆序的过程。于是,我们从后向前...

2019-04-19 21:23:41 92

原创 [leetcode]175-Combine Two Tables[SQL]

1. 原题https://leetcode.com/problems/combine-two-tables/2. 思路查询表中数据,使用外联结即可。3. 源码# Write your MySQL query statement belowSELECT pe.FirstName, pe.LastName, ad.City, ad.StateFROM Person AS pe...

2019-04-14 20:30:38 111

原创 [leetcode]030-Substring with Concatenation of All Words[数学逻辑map]

1. 原题https://leetcode.com/problems/substring-with-concatenation-of-all-words/2. 思路题意:给出一个字符串,多个等长的单词,输出匹配时的索引下标。给出的所有单词任意组合且中间无多余字符即匹配。注意,字符串长度可能小于单词长度。思路:题目较难。由于单词等长,所以只需遍历词长这么多次。每次遍历...

2019-04-13 21:54:34 78

原创 [leetcode]029-Divide Two Integers[数学逻辑]

1. 原题https://leetcode.com/problems/divide-two-integers/2. 思路题意:要求不能使用乘除和取余,求出商值。中等难度。可以回想出计算机是如何乘除的--利用移位。这里,我们同样也可以利用移位得出。为了便于处理边界,先将int转成长整型的绝对值,防止溢出。3. 源码class Solution {public: ...

2019-02-14 23:09:05 116

原创 [leetcode]028-Implement strStr()[字符串处理]

1. 原题https://leetcode.com/problems/implement-strstr/2. 思路查找字符串中是否含有子串,返回初始下标。比较简单。由于STL里有find函数,可以直接使用。也可以自己写匹配算法。3. 源码class Solution {public: int strStr(string haystack, string ne...

2019-02-12 19:56:53 89

原创 [leetcode]-027-Remove Element[数学逻辑]

1. 原题https://leetcode.com/problems/remove-element/2. 思路题意:给定一个数组和一个目标值,删除和目标值重复的元素。比较简单。遍历时,把不等的元素前移就好了。3. 源码class Solution {public: int removeElement(vector&lt;int&gt;&amp; nums, in...

2019-02-10 21:27:37 117

原创 [leetcode]026-Remove Duplicates from Sorted Array[数学逻辑]

1. 原题https://leetcode.com/problems/remove-duplicates-from-sorted-array/2. 思路题意:给定一个数组,去重并输出长度。比较简单。由于是有序数组,设置一个下标指示变量pos就行了。遍历比较相邻的整数,不等则nums[++pos] = nums[i].3. 源码class Solution {publ...

2019-02-09 21:56:17 112

原创 [leetcode]025-Reverse Nodes in k-Group[单链表-递归]

1. 原题https://leetcode.com/problems/reverse-nodes-in-k-group/2. 思路题意:给定一个单链表,依次翻转k个结点。难度中等。可以迭代处理,依次翻转,这里用的递归。3. 源码/** * Definition for singly-linked list. * struct ListNode { * int...

2019-02-07 20:36:36 122

原创 [leetcode]024-Swap Nodes in Pairs[链表交换]

1. 原题https://leetcode.com/problems/swap-nodes-in-pairs/2. 思路题意:给定一个单链表,每两个结点互相交换。比较简单,遍历交换就好。另外,可以用递归。3. 源码/** * Definition for singly-linked list. * struct ListNode { * int val; ...

2019-02-06 21:03:10 149

原创 [leetcode]023-Merge k Sorted Lists[单链表合并]

1. 原题https://leetcode.com/problems/merge-k-sorted-lists/2. 思路题意:给出k个有序链表,合并成一个。思路:有多种方法。这里采用逐次合并两个链表,共k-1次。时间复杂度O(k*N). 可以利用优先队列的性质,复杂度为O(N*logk).3.源码/** * Definition for singly-linked...

2019-02-05 21:58:59 194

原创 [leetcode]022-Generate Parentheses[递归]

1. 原题https://leetcode.com/problems/generate-parentheses/2. 思路题意:给出括号的对数,输出所有有效的括号组合。中等难度。每一个组合中,任一位置前左括号的出现次数一定大于或等于右括号的次数时才有效。问题不好下手,想一想,问题可以通过划分成小规模的子问题来降低复杂维度。于是,递归方法出来了。如何递归呢?鉴于有效的条件...

2019-02-04 21:06:48 143

原创 [leetcode]021-Merge Two Sorted Lists[单链表]

1. 原题https://leetcode.com/problems/merge-two-sorted-lists/2. 思路题意:给出两个有序单链表,合并一个有序单链表。比较简单,两个链表同时判断就好。3. 源码/** * Definition for singly-linked list. * struct ListNode { * int val; ...

2019-02-02 20:45:24 85

原创 [leetcode]020-Valid Parentheses[栈的应用]

1. 原题https://leetcode.com/problems/valid-parentheses/2. 思路题意:判断一组括号是否有效。比较简单,直接用栈来判断就可以。3. 源码class Solution {public: bool isValid(string s) { stack&lt;char&gt; st; fo...

2019-02-01 20:35:33 97

原创 [leetcode]019-Remove Nth Node From End of List[链表]

1. 原题https://leetcode.com/problems/remove-nth-node-from-end-of-list/2. 思路题意:删除单链表倒数第n个结点。不难,采用双指针法,先让第一个指针指向第n个,然后两个指针一同遍历,直到第一个为空。3. 源码/** * Definition for singly-linked list. * struct...

2019-01-31 22:00:06 97

原创 [leetcode]018-4Sum[数学逻辑]

1. 原题https://leetcode.com/problems/4sum/2. 思路题意:给出一组整数和一个目标值,求出所有的4个数组合,使得数和等于目标值。中等难度,是之前3sum题的扩展。3sum复杂度O(N^2), 4sum实际是加了一层循环,复杂度O(N^3).3. 源码class Solution {public: vector&lt;vecto...

2019-01-29 21:36:36 207

原创 [leetcode]017-Letter Combinations of a Phone Number[迭代]

1. 原题https://leetcode.com/problems/letter-combinations-of-a-phone-number/2. 思路题意:给出一串数,输出 每个数可表示的字符组成的字符串组合。中等难度。这里采用的迭代算法。即假如有3个字母的数N个,4个字母的数M个(N+M为给定的长度),则组合总数num=3^N*4^M. 那么,[0, num)依次遍历即...

2019-01-28 21:37:42 198

原创 [leetcode]016-3Sum Closest[数学逻辑]

1. 原题https://leetcode.com/problems/3sum-closest/2. 思路题意:给出一组整数和一个目标数,求三个数的和,使其尽可能逼近或等于目标值。中等难度。此题是求两个数和的扩展。对于两个数,一般是采用快慢指针的算法,复杂度O(N).显然,对于三个数,锚定一个数,另两个数采用快慢指针的算法。总复杂度O(n^2).求解前,对数组升序排序,遍历...

2019-01-27 20:55:19 188

原创 [leetcode]015-3Sum[数学逻辑]

1. 原题https://leetcode.com/problems/3sum/2. 思路题意:从一组序列中找出所有的组合,使得三个数之和为0.思路:这题有点类似两个数之和的扩展。题意暗含三个数是升序,而且相同的组合只能保留一个。我们知道求两数和为0可以采用快慢指针的算法,复杂度O(N).那么对于三个数之和,我们可以指定第一个数,让另外两个和为第一个的相反数即可。复杂度O(...

2019-01-26 22:16:03 402

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除