diff --git a/2018.11.15/1.md b/2018.11.15/1.md new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/2018.11.15/1.md @@ -0,0 +1 @@ +1 diff --git a/2018.11.16/1.md b/2018.11.16/1.md new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/2018.11.16/1.md @@ -0,0 +1 @@ +1 diff --git a/2018.11.17/1.md b/2018.11.17/1.md new file mode 100644 index 000000000..cfe9b7e72 --- /dev/null +++ b/2018.11.17/1.md @@ -0,0 +1,2 @@ +12 +1 diff --git a/2018.11.18/1.md b/2018.11.18/1.md new file mode 100644 index 000000000..e2be11e66 --- /dev/null +++ b/2018.11.18/1.md @@ -0,0 +1,2 @@ +11 +1 diff --git a/2018.11.19/1.md b/2018.11.19/1.md new file mode 100644 index 000000000..b4de39476 --- /dev/null +++ b/2018.11.19/1.md @@ -0,0 +1 @@ +11 diff --git a/2018.11.20/1.md b/2018.11.20/1.md new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/2018.11.20/1.md @@ -0,0 +1 @@ +1 diff --git a/2018.11.21/1.md b/2018.11.21/1.md new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/2018.11.21/1.md @@ -0,0 +1 @@ +1 diff --git a/2018.11.22/1.md b/2018.11.22/1.md new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/2018.11.22/1.md @@ -0,0 +1 @@ +1 diff --git a/2018.11.25-leetcode80/1.md b/2018.11.25-leetcode80/1.md new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/2018.11.25-leetcode80/1.md @@ -0,0 +1 @@ +1 diff --git a/2019.11.24/1.md b/2019.11.24/1.md deleted file mode 100644 index 36e497d3e..000000000 --- a/2019.11.24/1.md +++ /dev/null @@ -1,5 +0,0 @@ -### 变化 -### 变化 -### 变化 -### 变化 -### 变化 diff --git a/2019.11.24/2.md b/2019.11.24/2.md deleted file mode 100644 index 68f248fbf..000000000 --- a/2019.11.24/2.md +++ /dev/null @@ -1,71 +0,0 @@ ->考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰” - -### 前言 - ->2018.11.23号打卡 -**今天的题目**leetcode28: -https://leetcode-cn.com/problems/implement-strstr/description/ - -# 昨天的题解 -### 题目 - ->每天一道leetcode27-移除元素 -分类:双指针 -中文链接: -https://leetcode-cn.com/problems/remove-element/description/ -英文链接 -https://leetcode.com/problems/remove-element/description/ - -### 题目详述 -![题目.png](https://uploadfiles.nowcoder.com/images/20181123/3447384_1542949660852_20F77DF15D99AF164CD2A67D84E08420) - -###题目详解 - ->思路 - -- 这道题目看着题目很长,以为有点难度其实还行,其实一般; -- 就是用双指针的思想begin和end,一个在前一个在后,因为最后要的结果是不是val的值要在前面;也就是说begin如果找到不是val的值,那么就begin++;直到begin的值等于val,那么这个begin所指向的val的值需要移动到后面; -- end在数组末尾,end如果找到val(**因为val本来就要放在数组的最后面位置**),end--,直到end所在位置的值与val不相等(注意当end所在位置的值与val相等,统计一个个数,因为最后要返回数组的长度); -- 这样找到这两个值就进行交换,把begin和end所在位置的值进行交换;之后重复这个过程 - ->代码 - -```java -class Solution { - public int removeElement(int[] nums, int val) { - int count = 0; - int begin = 0; - int end = nums.length - 1; - while(begin <= end) - { - while(begin < nums.length && nums[begin] != val) - begin++; - while(end >= 0 && nums[end] == val) - { - count++; - end--; - } - if(begin >= end || begin >= nums.length || end < 0) - break; - int temp = nums[begin]; - nums[begin] = nums[end]; - nums[end] = temp; - } - return nums.length - count; - } -} -``` - ->代码讲解 - -- 8-9 begin所在的位置的值nums[begin]与val不相等,begin++,直到找到与val相等的位置 -- 10-14行 end所在的位置的值nums[end]如果与val值相等,end--,同时注意统计val值的个数count++; -- 15-16行 这些情况循环结束 -- 17-19行 交换begin与end所在的位置的值(**就是把 在数组后面的非val的值 与 在数组前面val值 进行交换**) -- 21行 原数组的长度减去count的值,就是非val的值的数目,也就是要返回数组的长度(已经把非val的值都放在了数组前面) - -### 结束语 - -2018.11.23号打卡 - ->作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的**微信公众号:程序员乔戈里**,公众号有**3T编程资源**,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++**面经**,并有**每天一道leetcode打卡群与技术交流群**,欢迎关注。 diff --git a/2019.11.24/OCEAN_he95.md b/2019.11.24/OCEAN_he95.md new file mode 100644 index 000000000..b3a98cb41 --- /dev/null +++ b/2019.11.24/OCEAN_he95.md @@ -0,0 +1,22 @@ +class Solution { + public int maxProfit(int[] prices) { + int max = 0; + //如果只有一个元素,直接返回0 + if(prices.length==1){ + return 0; + } + //如果有两个元素,并且第二个比第一个大的话,返回第二个减去第一个的值 + if(prices.length==2 && (prices[1]>prices[0])){ + return prices[1]-prices[0]; + } + //三个以上的元素就要考虑对于max的更新 + for(int i=0;imax){ + max = prices[j]- prices[i]; + } + } + } + return max; + } +} diff --git a/2019.11.24/kiritocly b/2019.11.24/kiritocly new file mode 100644 index 000000000..86febff51 --- /dev/null +++ b/2019.11.24/kiritocly @@ -0,0 +1,48 @@ +package com.zhongan; + +import java.util.Scanner; + +/** + * @author chenliyang + * @description 实现strStr()函数 + * @date 2018/11/24 + */ +public class Leetcode28 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + String haystack = sc.next(); + String needle = sc.next(); + System.out.println(strStr(haystack, needle)); + } + + private static int strStr(String haystack, String needle) { + if (needle.length() == 0) { + //如果needle为空字符串则返回0 + return 0; + } + char[] haystackCharArray = haystack.toCharArray(); + char[] needleCharArray = needle.toCharArray(); + for (int i = 0; i < haystackCharArray.length; i++) { + //遍历haystack,找到needle中的第一个字符在haystack中出现的位置的下标 + if (haystackCharArray[i] == needleCharArray[0]) { + //比较needle中其他的字符是否与haystack对应位置匹配 + int index = i + 1; + int j; + for (j = 1; index < haystackCharArray.length && j < needleCharArray.length; j++) { + if (haystackCharArray[index] == needleCharArray[j]) { + //字符串中字符匹配则比较下一个字符 + index++; + } else { + break; + } + } + if (j == needleCharArray.length) { + //字符串全部匹配则返回needle字符串第一个字符在haystack中出现位置的下标 + return i; + } + } + } + //未匹配则返回-1 + return -1; + } +} diff --git a/2019.11.24/leeboolean b/2019.11.24/leeboolean new file mode 100644 index 000000000..fab42ba0e --- /dev/null +++ b/2019.11.24/leeboolean @@ -0,0 +1 @@ +TEST!! diff --git a/2019.11.24/sourcema.md b/2019.11.24/sourcema.md new file mode 100644 index 000000000..833244734 --- /dev/null +++ b/2019.11.24/sourcema.md @@ -0,0 +1,14 @@ +# leetcode 80 + public int removeDuplicates(int[] nums) { + if (nums == null || nums.length == 0 || nums.length < 3) { + return nums.length; + } + int i=0; + for (int j = 0; j < nums.length; j++) { + if (i < 2 || nums[j] != nums[i - 2]) { + nums[i] = nums[j]; + i++; + } + } + return i; +} diff --git a/2019.11.24/testtest! b/2019.11.24/testtest! deleted file mode 100644 index 362f165b6..000000000 --- a/2019.11.24/testtest! +++ /dev/null @@ -1 +0,0 @@ -Dsadsadasd diff --git a/2019.11.24/zzz.md b/2019.11.24/zzz.md new file mode 100644 index 000000000..deff50d19 --- /dev/null +++ b/2019.11.24/zzz.md @@ -0,0 +1 @@ +# 测试leetcode提交 diff --git "a/2019.11.24/\344\271\224\346\210\210\351\207\214.md" "b/2019.11.24/\344\271\224\346\210\210\351\207\214.md" index 79c5a47b8..0b6b3ba63 100644 --- "a/2019.11.24/\344\271\224\346\210\210\351\207\214.md" +++ "b/2019.11.24/\344\271\224\346\210\210\351\207\214.md" @@ -1,36 +1,83 @@ -``` -import java.util.*; -public class Solution { - public String replaceSpace(StringBuffer str) { - String str1 = str.toString(); - if(str1.equals("")) - return str1; - char [] strArray = str1.toCharArray(); - int i =0; - int lengthSpace = 0; - while(i < strArray.length) - { - if(strArray[i] == ' ') - lengthSpace++; - i++; - } - int newStrLength = strArray.length + lengthSpace*2; - char [] newStr = new char[newStrLength]; - int j = newStrLength-1; - i = strArray.length - 1; - while(i >= 0) +>考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰” + +### 前言 + +>2018.11.24号打卡 +**今天的题目**leetcode80: +https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/description/ + +# 昨天的题解 +### 题目 + +>每天一道leetcode28-移除元素 +分类:双指针 +中文链接: +https://leetcode.com/problems/implement-strstr/submissions/ +英文链接 +https://leetcode.com/problems/implement-strstr/submissions/ + +### 题目详述 +>实现 strStr() 函数。 +给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 +示例 1: +输入: haystack = "hello", needle = "ll" +输出: 2 +示例 2: +输入: haystack = "aaaaa", needle = "bba" +输出: -1 +说明: +当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 +对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 + +###题目详解 + +>思路 + +- 一次比较过程:遍历haystack字符串,找到与needle开头字符然后记录下来这个位置i,然后j=i+1依次与needle进行比较,看每个字符是否相等,相等就继续比较下一个字符,直到找到不相等的字符,那么这次比较久结束,如果都相等直接返回i; +- 接下来就是haystack字符串i进行+1,然后再重复上述过程。 + +>代码 + +```java +class Solution { + public int strStr(String haystack, String needle) { + if(needle.length() == 0) + return 0; + char [] charArrayhaystack = haystack.toCharArray(); + char [] charArrayneedle = needle.toCharArray(); + for(int i =0;i代码讲解 + +- 5-6行把字符串转化成字符数组处理 +- 7行是外层循环,也就是haystack字符串 +- 9行如果haystack字符串的字符与needle字符串的开头字符相等,那么这里用j=i+1;然后从相等的下一个字符开始依次与needle的每一个字符进行比较 +- 13-21行就是比较过程,18-19行如果中途出现不相等的那么就比较结束;跳到外层循环也就是haystack字符串再往下移动一位 +- 22-23行就是needle字符串都遍历完了,k已经到了字符串的末尾的位置了,说明每个字符都相等,那么就返回haystack字符串开始的位置i; +### 结束语 + +2018.11.24号打卡 + +>作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的**微信公众号:程序员乔戈里**,公众号有**3T编程资源**,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++**面经**,并有**每天一道leetcode打卡群与技术交流群**,欢迎关注。 diff --git "a/2019.11.24/\345\217\230\345\214\226.md" "b/2019.11.24/\345\217\230\345\214\226.md" deleted file mode 100644 index ffce8d14f..000000000 --- "a/2019.11.24/\345\217\230\345\214\226.md" +++ /dev/null @@ -1,6 +0,0 @@ - -# 变化 -# 变化 -# 变化 -# 变化 -# 变化 diff --git "a/2019.11.24/\345\217\245\345\255\220.md" "b/2019.11.24/\345\217\245\345\255\220.md" new file mode 100644 index 000000000..bda11df71 --- /dev/null +++ "b/2019.11.24/\345\217\245\345\255\220.md" @@ -0,0 +1,17 @@ +``` +class Solution { + public int removeElement(int[] nums, int val) { + int j=0; + for(int i=0;i printListFromTailToHead(ListNode listNode) { + ListNode temp=listNode; + ArrayList list=new ArrayList<>(); + int count=0; + if(listNode==null) + return list; + while(temp!=null){ + count++; + temp=temp.next; + + } + int [] array=new int [count]; + temp=listNode; + for(int i=0;i& nums) { + if (nums.size() <= 2) return nums.size(); + int end = 2; //end是最终的长度 + for (int i = 2; i < nums.size(); i++) { + if (nums[end - 2] != nums[i]) { //对比这两个数是否相等即可 + nums[end++] = nums[i]; + } + } + return end; + } +}; diff --git "a/2019.11.25-leetcode80/\345\277\206\345\255\243\350\220\275\350\212\261.md" "b/2019.11.25-leetcode80/\345\277\206\345\255\243\350\220\275\350\212\261.md" new file mode 100644 index 000000000..85789b35b --- /dev/null +++ "b/2019.11.25-leetcode80/\345\277\206\345\255\243\350\220\275\350\212\261.md" @@ -0,0 +1,15 @@ +# -*- coding:utf-8 -*- +class Solution: + def __init__(self): + self.stack1=[] + self.stack2=[] + def push(self, node): + self.stack1.append(node) + def pop(self): + if self.stack2: + return self.stack2.pop() + else: + while self.stack1: + self.stack2.append(self.stack1.pop()) + return self.stack2.pop() + # return xx