注: 以下题目都是根据 LeetCode App上的顺序,按照由易到难排列
237、删除链表中的节点
编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,函数将只会传给你要被删除的节点(坑在这里,注意:传给你的不是head节点和要删除的值,而是直接传给你要删除的那个节点)。
点击看答案
仅仅只是删除而已,简直是脑筋急转弯,被坑进去了
自己写的时候的问题:没啥,主要是审题
344、反转字符串
点击看答案
首尾双指针
自己写的时候的问题:尴尬,忘了 i++,j– 了
7、整数反转
点击看答案
每次反转一个数字,注意防止溢出(可以考虑result使用long类型)
自己写的时候的问题:要注意负数的最小值,和整数最大值一样处理
9、回文数,判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。你能不将整数转为字符串来解决这个问题吗?
点击看答案
反转后一半数字
自己写的时候的问题:*通过不断除以10,搞清楚这个值到底是什么数量级,比如99,那 div 就是10级,比如 999,那 div 就是 100级,然后通过 n/div 就能得到第一位, n%10,得到最后一位,比较他们的值。依次往复 *
14、(还未做)最长公共前缀
点击看答案
直接看链接,这个不大会
88、合并两个有序数组nums1和nums2,将nums2合并到nums1中,使nums1成为一个有序数组(假设nums有足够空间)。
点击看答案
从后往前,注意 nums1 中剩余的元素
自己写的时候的问题:没问题,从尾到头合并即可
20、有效的括号:给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效(即括号的开闭符合规则)。
点击看答案
使用HashMap 建立映射关系,Stack 用于遍历
自己写的时候的问题:记住 Stack 的 isEmpty() 、pop 、push 方法即可
21、合并两个有序链表,将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的(假设链表元素顺序由小到大)
点击看答案
双指针,注意其中一个链表到表尾时,另一个链表整个接上去
292、Nim 游戏,桌上一堆石头,两人轮流拿1~3块石头,拿到最后一块石头的人获胜。现在给n块石头,你先拿,判定你是否能赢得游戏。你们是聪明人,每一步都是最优解。
点击看答案
当 n%4 != 0 时,就可以赢
26、删除排序数组中的重复项,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。你不需要考虑数组中超出新长度后面的元素。
点击看答案
后一个元素与当前重复,则直到不重复的元素,移过来,覆盖重复元素。
53、最大子序和
点击看答案
前面的和是否是正数,是正数就有增益
70、爬楼梯,需要爬n阶才能到楼顶,每次可以爬1阶或者2阶,有多少种方法爬到楼顶?
点击看答案
斐波那契数列
104、二叉树的最大深度
点击看答案
记住递归方法,好用的递归的方法
121、买卖股票的最佳时机,给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
点击看答案
遍历,记录当前最小的值,以及之后相对应的最大利润
122、买卖股票的最佳时机 II,给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票,注意你不能在买入股票前卖出股票)
点击看答案
简单的一次遍历,相邻依次减下去
136、只出现一次的数字,一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
点击看答案
所有元素异或
141、环形链表,给定一个链表,判断链表中是否有环
点击看答案
快慢指针,并且快指针每次走两步,慢指针每次走一步
557、反转字符串中的单词 III
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”