力扣
力扣的笔记
超爱喝酸奶丶
这个作者很懒,什么都没留下…
展开
-
力扣之字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = “leetcode”返回 0.s = “loveleetcode”,返回 2.本题思路:先遍历一遍字符串,用hashmap储存每个字符出现的次数,然后再次遍历字符串,返回第一个出现次数为1的字符下标首先,创建一个hashmap然后第一次遍历字符串,记录字符串出现的次数这里的getOrDefault(a,b)方法解释如下:get到a对应的value值,如果hashmap里没有a的话,则赋原创 2020-05-25 19:49:50 · 135 阅读 · 0 评论 -
力扣之求两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。我这里使用的是双指针的解法先给两个数组排序新建一个hashset然后定义两个指针当两者都小于数组的长度时,就进入循环当两个数字相同的时候,这很好,就把这个原创 2020-05-20 00:14:50 · 245 阅读 · 0 评论 -
力扣之两个数组的交集2
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]这题我用的是哈希表,就当练习练习hashmap了这里我们要求的是两个数组的交集我们先遍历第一个数组如果这个表中已经有这个数字了,那么val就+1如果没有这个数字,那么就将这个数字放进表中并且给个默认的val 1创建一个list原创 2020-05-19 22:50:15 · 121 阅读 · 0 评论 -
力扣之最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。从第一个开始[-2]:------> [-2],第0项这只有一种情况,最大值为-2[-2,1]:------>[-2,1],[1],第1项这里有两种情况,最大值为1[-2,1,-3]:------>[-2,1,-3],[1,-3],[-3原创 2020-05-17 21:08:42 · 208 阅读 · 0 评论 -
力扣之合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4我们使用递归的方法完成如果 l1 或者 l2 一开始就是空链表 ,那么没有任何操作需要合并,所以我们只需要返回非空链表。否则,我们要判断 l1 和 l2 哪一个链表的头节点的值更小,然后递归地决定下一个添加到结果里的节点。如果两个链表有一个为空,递归结束。...原创 2020-05-16 15:34:48 · 149 阅读 · 0 评论 -
力扣之探索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0逻辑方面来说,题目解答出来十分容易。我理想不是太遥远,解出来就可以了,效率啥的以后再说吧思路:首先,题目给了一个数组和目标值原创 2020-05-15 22:15:16 · 119 阅读 · 0 评论 -
力扣之有效括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入: “()”输出: true**示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true思路:建立哈希表建立对应的关系,建立一个栈,我这里使用的是Dequ原创 2020-05-15 21:41:31 · 132 阅读 · 0 评论 -
力扣之实现strStr()
本人用的是字符串切割假设给的haystack给的needle图有点丑。。可以看到haystack的长度为9,needle的长度为4就和拼积木一样我们只需要这样一个个的对准,看是否符合,如果到最后都不符合那肯定返回-1了下面代码实现先把两个长度取出来,方便代码书写接下来遍历,至于为什么这里是len01-len02让我们想想,其实不需要遍历完的第一个出现重合的位置,最晚最晚也是在len01-len02这个位置,不会跑到最后的,超过这个的话,下面字符串切割都溢出了下面就.原创 2020-05-13 23:24:53 · 196 阅读 · 1 评论 -
力扣之最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”我这里只用了一个最容易想到的方法,暴力破解提供了一个字符串数组strs当字符串数组的长度为0时,则返回""因为是最长公共的前缀,所以这里可以假设最长前缀为strs[0]遍历下这个字符串数组依次提取字符串数组中的内容,和初始原创 2020-05-12 23:33:11 · 87 阅读 · 0 评论 -
力扣之回文数
回文数:正过来反过来是一样的数字例如:121,1221-121,倒过来是121-,所以负数不是所有负数都不是回文数,所以排除负数先把x赋值给i,因为在下面的操作中x的值是会变的,事先先取出来方便后面比较我们的逻辑是这样的:假设数字是123先取出最后一个数字3将123进行对10取余,这样余数就是3将3赋值给box,这时候box由0变为3然后将x/10,这样方便我们对12进行如上的操作对12进行对10取余,这样余数就是2将2赋值给10倍后的box,这里要注意的是,box一定要进行乘10原创 2020-05-11 14:53:32 · 243 阅读 · 0 评论 -
力扣之整数翻转
在不考虑溢出的情况下如何翻转一个整数?所以说一个数字:12345要想12345变成54321,只需要先取5,再取4,以此类推如何做到?对12345进行对10取余,即12345%10,答案为5然后对1234对10进行取余,即1234%10,答案为4对123对10进行取余,即123%10,答案为3对12对10进行取余,即12%10,答案为2对1对10进行取余,即1%10,答案为1到此为止,依次可以取出54321,实现了翻转下面实现下(不是最终版本)首先,这是一个简单的条件,当x>原创 2020-05-11 12:13:44 · 173 阅读 · 0 评论 -
力扣之买卖股票的最佳时机 II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。解法一:强行用双指针,感觉自己好蠢。。。。就是用两个指针,然后两个指针同时前进比大小,可以就相减最后把值加起来,思路完全饶了,想的太复杂了。。解法二:直接一个循环解决...原创 2020-04-16 10:45:58 · 125 阅读 · 0 评论 -
力扣之删除数组中的重复项
题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解法:使用双指针代码如下Class soluion{public int removeDuplicates(int[] nums)int back=0; ...原创 2020-04-16 10:00:14 · 330 阅读 · 0 评论