diff --git a/Week_01/README.md b/Week_01/README.md index 50de3041..b85309d2 100644 --- a/Week_01/README.md +++ b/Week_01/README.md @@ -1 +1,29 @@ -学习笔记 \ No newline at end of file +学习笔记 +一、数组、链表以及跳表 +a0 数组的理论:数组中删除、添加、以及插入元素 +a1 数组的题目思路总结: +26 删除排序数组中的重复项(最开始做题目的时候,没有思路,看了题解,利用的是双指针的方法,一个指针i和另外一个指针j,当指针i所指向的元素和指针j所指向的元素相等的时候,j++,而当两个指针所指向的元素值并不相等的时候,就让j的值放置于i+1的位置。但这道题目还是需要加强,对于两个指针的这种变换方式,每次要自己写的时候,总有些困难。leetcode中与这个题目类似的题目还有80题,这个题目是要求数组中重复出现的元素的出现次数进行了限制。另外与这一题目我老是混淆的一道题目还有27题,这一道题目是删除数组中等于特定值的元素,总结来说,我对于删除数组中的元素的操作不是很熟练) +189 旋转数组(直接看的题解,有两种方法,一种是直接使用额外的数组,另外一种是使用暴力) +88 合并两个有序数组(一种是使用暴力,直接将两个数组合并,然后再使用排序函数重新进行排序,另外一种是使用两个指针,分别对两个数组的元素进行比较,每次将较小的元素放置在新数组中,比较完成后,再将两个数组剩余的元素放置在新的数组中,第三种方法就是在第二种方法的基础上进行改进,我当时没有实现这种方法,还需要再看一下) +1 两数之和(两种方法,方法一:直接使用暴力去实现,方法二:使用哈希表将所有元素存储进入哈希表,对于每一个值,我们寻找哈希表中是否存在target-x的元素存在) +66 加1(这道题目需要考虑在最后一位加的时候是否有进位,如果有进位的话,需要判断一下) +a2 总结:数组部分的题目对于删除元素的操作还需要多练习,对于已有的题目还需要再加练习、记忆。 + +b0 链表的理论: +链表的建立、链表中插入元素、链表中删除元素(可以通过画图加强理解)、循环队列、以及有环的队列 +b1 链表的题目: +21 合并两个有序链表(直接看答案用迭代做的,还是不是很理解,递归的答案,看题解很完美,但是我写不出来) +206 反转链表(通过画图理解并解决,但是还是不够熟练) +24 两两交换链表中的节点(这个题目给我的新启发就是设置了一个哑结点,这个方法在LeetCode中一些链表题目涉及删除操作的时候用到了。) + +c0 栈的理论 +java中关于栈的函数以及栈最重要的特点(先进后出) +c1 栈的题目 +42 接雨水(题目是直接抄的题目,还需要多看几遍视频加强理解) + +d0 队列的理论 +java中关于队列的函数以及队列的特点,还有特殊的队列(双端队列) +d1 队列的题目 +641 设计循环双端队列(这个题目还需要多练习,还不能够自己手写出来) + +第一周总结:题目的熟练程度不够,理论知识还需要加强。 diff --git "a/Week_01/\347\254\254\344\270\200\345\221\250\344\275\234\344\270\232.txt" "b/Week_01/\347\254\254\344\270\200\345\221\250\344\275\234\344\270\232.txt" new file mode 100644 index 00000000..5c6527d9 --- /dev/null +++ "b/Week_01/\347\254\254\344\270\200\345\221\250\344\275\234\344\270\232.txt" @@ -0,0 +1,234 @@ +26: +class Solution { + public int removeDuplicates(int[] nums) { + int i=0; + for(int j=1;j=0 && len2>=0){ + nums1[len--]=nums1[len1]>nums2[len2]?nums1[len1--]:nums2[len2--]; + } + System.arraycopy(nums2,0,nums1,0,len2+1); + } +} + +1: +class Solution { + public int[] twoSum(int[] nums, int target) { + int[] res=new int[2]; + for(int i=0;i=0;i--){ + carry+=digits[i]+1; + ans.append((char)(carry%10)+'0'); + carry/=10; + } + if(carry>0){ + ans.append(carry); + } + ans.reverse(); + String res=ans.toString(); + int[] resdigits=new int[res.length()]; + for(int i=0;i