![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
Maxwell__726
stay hungry stay foolish
展开
-
[Array]-189. Rotate Array(@python)解题报告
原题链接:https://leetcode.com/problems/rotate-array/description/思路分析:将一个数组右旋转k位,将最后的结果和最初的数组对比,找出坐标对应关系,替换元素即可Time Complexity:O(n)Space Complexity:O(k)题解: length = len(nums) k = k原创 2017-11-24 11:29:31 · 329 阅读 · 0 评论 -
字符串-leetcode 541. Reverse String II
原题链接:Reverse String题解:public class Solution { public String reverseStr(String s, int k) { /* Time Complexity:O(N) Space Complexity:O(N) */ c原创 2017-07-14 16:31:28 · 326 阅读 · 0 评论 -
字符串-leetcode 557 Reverse Words in a String III
原题链接:Reverse Words in a String III分析:字符串反转是很常见的面试题,这种题的思路一般是找到空格,然后依次反转各个单词。代码如下:class Solution {public: string reverseWords(string s) { /* 思路:反转遇到的第一个非空字符与第一个空字原创 2017-06-26 19:48:59 · 249 阅读 · 0 评论 -
字符串- leetcode 344. Reverse String
原题链接:Reverse String题解:public class Solution { public String reverseString(String s) { /* Time Complexity:O(N) Space Complexity:O(N) */ char[原创 2017-07-14 11:59:21 · 259 阅读 · 0 评论 -
数组-leetcode 1. Two Sum
原题链接:Two Sum题解:public class Solution { public int[] twoSum(int[] nums, int target) { /* Time Complexity:O(n) Space Complexity:O(n) */ int[]原创 2017-07-14 00:45:57 · 314 阅读 · 0 评论 -
字符串,数组旋转问题-leetcode 189 Rotate Array
原题链接:Rotate Array分析:这种问题属于反转问题,不管是字符串,还是数组都可以使用类似的方法解决;有很多方法解决这种问题,这里提供一种经典的三反转法,这种方法不管是时间复杂度还是空间复杂度都做到了最低。看代码:class Solution {public: void reverse(vector& nums,int from,int to){原创 2017-06-26 16:48:37 · 388 阅读 · 0 评论 -
链表 leetcode 143 Reorder List
原题链接:Reorder List题解:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution原创 2017-06-25 15:12:05 · 389 阅读 · 0 评论 -
链表-leetcode 203. Remove Linked List Elements
题目链接:Remove Linked List Elements/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solu原创 2017-06-22 15:36:52 · 218 阅读 · 0 评论 -
链表-leetcode 445 Add Two Numbers
原题链接:Add two numbers II题解://分析:这道题是Add two numbers的演化版,当然可以先将链表反转,然后回到了之前的那道题。但是题目明确follow not modify the input lists,就是禁止反转输入链表。怎么办呢?链表从高位到低位,加法从低位到高位,貌似这种关系可以借用到栈的先进后出嚎~。于是答案就来了:/** * Definition fo原创 2017-06-23 09:52:32 · 209 阅读 · 0 评论 -
链表-leetcode 328. Odd Even Linked List
原题链接:Odd Even Linked List题意理解:这道题是难得的几道题意比较绕的题,如果没有看清题意会把它当做难题来做(我起初就是这样)。仔细看看才发现原来酱紫。 题意是这样的:奇 偶 奇 偶 奇 偶 奇 偶…..序列 要求将奇数节点inplace移到前面。其实很简单: /** * Definition for singly-linked list. * struct Lis原创 2017-06-23 17:07:00 · 497 阅读 · 0 评论 -
链表-leetcode 142 Linked List Cycle II
原题链接:Linked List Cycle II如果没有follow up 这道题会非常简单,也非常容易想到,代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(原创 2017-06-24 11:25:27 · 416 阅读 · 0 评论 -
链表-leetcode 82 Remove Duplicates from Sorted List II
原题链接Remove Duplicates from Sorted List II分析:这道题说难不难,说简单也不简单,关键是思维要清晰。删除所有有重复元素,考虑到以下几个问题:从第一个节点开始就重复,中间位置重复,没有重复。题解如下:/** * Definition for singly-linked list. * struct ListNode { * int val; *原创 2017-06-24 16:40:13 · 308 阅读 · 0 评论 -
字符串-leetcode 521 Longest Uncommon Subsequence I
原题链接:Longest Uncommon Subsequence I题解如下:class Solution {public: int findLUSlength(string a, string b) { /* 这道题是一道流氓题,看题意看半天,解题一分钟; 最长不公共子序列,显然,如果a!=b,那么长度最原创 2017-06-27 17:15:10 · 204 阅读 · 0 评论 -
字符串 leetcode 387. First Unique Character in a String
原题链接:First Unique Character in a String题解:class Solution {public: int firstUniqChar(string s) { mapmm; for(int i=0;i<s.size();i++)mm[s[i]]++; for(int i=0;i<s.size(原创 2017-07-05 21:29:15 · 213 阅读 · 0 评论 -
[Array]-119. Pascal's Triangle II(@python)解题报告
原题链接:https://leetcode.com/problems/pascals-triangle-ii/description/题意:这道题和118题类似,但是这道题要求的输出是第k行的输出即可。思路:可以利用杨辉三角一个很重要的特性快速得到结果,那就是一行的数组可以有上一行的数组前后分别添加0 相加得到题解:class Solution(object原创 2017-11-19 18:17:08 · 267 阅读 · 0 评论 -
[Array]-643. Maximum Average Subarray I (@python) 解题报告
原题链接:https://leetcode.com/problems/maximum-average-subarray-i/description/题目大意:给定一个整型数组,和一个整数k, 找到平均值最大的个数为k的子数组。解题思路:常规思路:使用滑动窗口。 窗口大小为k题解:class Solution(object): def findMa原创 2017-11-18 21:45:32 · 348 阅读 · 0 评论 -
[Array]-118. Pascal's Triangle(@python)解题报告
原题链接:https://leetcode.com/problems/pascals-triangle/description/题目大意:输入一个整数k,生成一个高度为k的杨辉三角思路:依次生成每一层的数组即可,注意层次关系是res[row][i] = res[row-1][i-1] + res[row][i]题解:class Solution(object原创 2017-11-19 17:47:07 · 296 阅读 · 0 评论 -
leetcode 349. Intersection of Two Arrays-[Java]
原题链接:Intersection of Two Arrays思路:利用set去除重复,查找两个集合中都有的元素添加进结果集;public class Solution { public int[] intersection(int[] nums1, int[] nums2) { /* Time complexity:O(m原创 2017-08-14 19:58:52 · 222 阅读 · 0 评论 -
数组-leetcode 414. Third Maximum Number
原题链接:Third Maximum Number分析:找出第三大的数,这是找出第K大的数这道题的一个简易版,当然可以使用找第K大的数的做法(快排,partition,O(N))。这里我们使用的是简单的找最大值的方法,找出第一个的数,找出第二大的数,找出第三大的数,就是结果。题解:public class Solution { public int thirdM原创 2017-07-23 14:46:50 · 263 阅读 · 0 评论 -
数组-leetcode 283. Move Zeroes
原题链接:Move Zeros思路分析:将元素0移动到数组末端并保持非0元素相对顺序不变,而且要in-place。使用双指针,一个指针遍历,另一个指针始终保持指向数组前段非0元素的最后一个遍历指针遍历完,将指向指针之后的元素都置0即可;题解:public class Solution { public void moveZeroes(int[] nums原创 2017-07-17 20:19:01 · 282 阅读 · 0 评论 -
字符串-leetcode 72 Edit Distance
原题链接:Edit Distance分析:这是一个编辑距离的问题,在编程之美上也有这道题,做法比较简单的可以想到递归的思路,然而会发现递归的思路复杂度太高,是指数级,转而也比较容易想到动态规划的思想优化复杂度,具体代码如下:class Solution {public: int minDistance(string word1, string word2) {原创 2017-06-28 14:22:16 · 270 阅读 · 0 评论 -
位操作-leetcode 371. Sum of Two Integers
原题链接:Sum of Two Integer分析:不使用加号的加法运算,考虑如下情况:1)a与b之间没有进位,那么a^b就是结果2)a与b之间有进位,即a&b不等与0,那么结果就是a&b 考虑循环进位,使用递归处理sum;题解:public class Solution { public int getSum(int a, int b) {原创 2017-07-16 11:31:23 · 252 阅读 · 0 评论 -
栈-leetcode 496. Next Greater Element I
原题链接:Next Greater Element I题解:public class Solution { public int[] nextGreaterElement(int[] findNums, int[] nums) { /* Time Complexity:O(N) Space Complexity原创 2017-07-16 09:59:53 · 479 阅读 · 0 评论 -
leetcode 434- Number of Segments in a String
原题链接:Number of Segments in a String分析:题目比较简单,求非空字符的片段数,只需要判断s[i]!=' '&&s[i+1]==' '就可以;代码如下:class Solution {public: int countSegments(string s) { /* Time Complexity:O(N原创 2017-06-27 20:12:42 · 372 阅读 · 0 评论 -
字符串-leetcode 242 Valid Anagram
原题链接:Valid Anagram分析:这道题在leetcode中归为hash table,应该用hash table的方法可能会有一个很好的效果,但是我这里使用的是字符串的方法,没有用到hash,所以暂且自私的归为字符串类题目比较简单,思路就是先判断两个字符串长度是否一样,如果不一样,显然应该返回false,如果一样,将字符串排序,比较这两个排序之后的字符串是否相等。代码如下:原创 2017-06-27 11:15:02 · 239 阅读 · 0 评论 -
链表-leetcode 92 Reverse Linked List II
原题链接:Reverse Linked List II题意比较明晰,代码逻辑也比较清晰,思路就是,标记第m个节点,同时将m到n的节点的值入栈,进行反转节点代码如下/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *原创 2017-06-25 12:08:41 · 224 阅读 · 0 评论 -
字符串-leetcode 344 Reverse String
原题链接:Reverse String题目很简单,代码如下:class Solution {public: string reverseString(string s) { /* Time Complexity:O(n) */ for(int i=0,j=s.size()-1;i<=j;i++,j--)swa原创 2017-06-24 20:16:57 · 228 阅读 · 0 评论 -
位操作-leetcode 338 Counting Bits
原题链接:Counting Bits题解:class Solution {public: vector countBits(int num) { /* i的1的个数等于i>>1+i&1的,然而i>>1在已经计算出来 Time Complexity:O(N) Space Complexity:原创 2017-07-01 15:25:51 · 177 阅读 · 0 评论 -
链表-leetcode 138. Copy List with Random Pointer
原题链接:Copy List With Random Pointer题解:/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; * RandomListNode *next, *random; * R原创 2017-07-01 00:39:51 · 309 阅读 · 0 评论 -
位操作-leetcode 476. Number Complement
原题链接:Number Complement题解:class Solution {public: int findComplement(int num) { long int flag=1; long int res=0; while(flag && flag<=num){ int t=flag# if(t==0){ res |原创 2017-07-01 11:05:15 · 205 阅读 · 0 评论 -
位操作-leetcode 461 Hamming Distance
原题链接:Hamming Distance题解:class Solution {public: int hammingDistance(int x, int y) { /* Time Complexity:O(1) Space Complexity:O(1) */ x^=y;原创 2017-07-01 10:37:58 · 216 阅读 · 0 评论 -
Array-leetcode 566 Reshape the Matrix
原题链接:Reshape the Matrix题解:public class Solution { public int[][] matrixReshape(int[][] nums, int r, int c) { /* Time Complexity:O(M*N) Space Complexity:O(M*原创 2017-07-11 00:08:18 · 299 阅读 · 0 评论 -
链表-leetcode 86 Partition List
原题链接:Partition List题解:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solut原创 2017-06-30 21:34:45 · 284 阅读 · 0 评论 -
链表- leetcode 147. Insertion Sort List
原题链接:Insertion Sort List题解:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class原创 2017-06-30 16:30:32 · 336 阅读 · 0 评论 -
链表-python-leetcode 83 Remove Duplicates from Sorted List
原题链接:Remove Duplicates from Sorted List代码如下:(python)# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next =原创 2017-06-29 15:29:41 · 329 阅读 · 0 评论 -
链表-leetcode 83 Remove Duplicates from Sorted List
原题链接:Remove Duplicates from Sorted List分析:因为链表已经是有序的,所以重复的值都会集中在一起,所以直接遍历,删除重复值就行。题解:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;原创 2017-06-29 15:26:19 · 223 阅读 · 0 评论 -
链表-leetcode 25 Reverse Nodes in k-Group
原题链接:Reverse Nodes in K-Group分析:这道题其实并不难,只是题目限制了很多空间,限制不能交换值,只能交换节点,限制了只能使用constant的空间,所以使用辅助栈的方式的做法不符合题意,当然用了也是可以Accept的,另当别论了。这道题其实类似于一道,不使用栈的单链表反转,只是这里是每k个节点反转一次。代码如下:/** * Definition原创 2017-06-29 15:08:29 · 312 阅读 · 0 评论 -
数组-leetcode 561 Array Partition I
原题链接:Array Partition I分析:这道题觉得没什么意思,关键是要明白所谓的pair的最小值的sum要最大,是不是让每个pair的min发挥的价值要大一点,换句话说就是我的最小值是不是要同时抹掉另一个很小的值,这样其他的pair的min就会大一点。这样一来,问题就迎刃而解了。排序,两两组队,取偶数位的sum就是结果。代码如下:class Solution原创 2017-06-28 20:35:40 · 369 阅读 · 0 评论 -
链表-leetcode 141 Linked List Cycle
题目链接:Linked List Cycle题解: /* 思路:借助一个set,将访问过的节点存储到set中,如果再次访问到set,则返回true,否则返回false; Time Complexity:O(N) Space Complexity:(N) *//** * Definition for singly-原创 2017-06-22 15:35:03 · 260 阅读 · 0 评论 -
位操作-leetcode 136. Single Number
原题链接:Single Number分析:每个元素都出现了两次除了一个(好凄惨,就像一对一对的情侣中只有一条单身狗),现在要找出这条单身狗,哦不,这一个单独的数Single Number. 注意到,任何两个相同的整数 异或 的结果为0,和连连看一样,一对一对就消掉了,剩下一只消不掉的就是我们要的结果。题解:class Solution {public: i原创 2017-07-02 10:54:05 · 214 阅读 · 0 评论