数组
只出现一次的数字
给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素
答题思路:一个数组中除了一个元素,其他元素都出现两次,所以可以使用位运算异或来实现,因为相同的元素进行异或其结果为0
1 | class Solution { |
从排序数组中删除重复项
给定一个有序数组,需要原地删除其中重复内容,使每个元素只出现一次,并返回新的长度
不要另外定义一个数组,必须通过O(1)额外内存原地修改输入的数组来做到这一点
1 | class Solution { |
两数之和
给定一个整数数列,找出其中和为特定值的那两个数
- 示例:
1 | 给定nums = [2, 7, 11, 15], target = 9 |
答题思路:
- 第一次遍历数组先将所有元素和它的下标作为key-value对存入HashMap中,第二次遍历数组根据目标和与当前元素只差,在HashMap中找相应的差值
- 如果存在该差值,说明存在两个数之和是目标和。
1 | class Solution { |
两个数组的交集
给定两个数组,写一个方法来计算它们的交集
例如:
给定nums1 = [1, 2, 2, 1], nums2 = [2, 2],返回[2, 2]
注意:
- 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致
- 可以不考虑输出结果的顺序
1 | class Solution { |
加一
给定一个非负整数组成的非空数组,给整数加1
可以假设整数不包含任何前导零,除了数字0本身
最高位数字存放在列表的首位
1 | class Solution { |
存在重复
给定一个整数数组,判断是否存在重复元素
如果任何值在数组中出现至少两次,函数应该返回true。如果每个元素都不相同,则返回false
1 | class Solution { |
字符串
反转字符串
编写一个函数,其功能是将输入的字符串反转过来
1 | class Solution { |
颠倒整数
给定一个32位有符号整数,将整数中的数字进行反转
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
1 | class Solution { |
字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复字符,并返回它的索引。如果不存在则返回-1
案例:
1 | s = "leetcode" |
注意事项:您可以假定该字符串只包含小写字母。
1 | class Solution { |
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀
如果不存在最长公共前缀,返回空字符串””
1 | class Solution { |
有效的字母异味词
给定两个字符串s和t,编写一个函数来判断t是否是s的一个字母异位词
s = “anagram”,t = “nagaram”,返回 true
s = “rat”,t = “car”,返回 false
注意:
假定字符串只包含小写字母。
提升难度:
输入的字符串包含 unicode 字符怎么办?你能能否调整你的解法来适应这种情况?
1 | class Solution { |
链表
删除链表的结点
编写一个函数,使其可以删除某个链表中给定的(非末尾的)节点,只被给予要求被删的节点
比如:假设该链表为1 -> 2 -> 3 -> 4
,给定你的该链表值为3
的第三个节点,那么在调用了您的函数之后,该链表则应变成1 -> 2 ->4
1 | /** |
删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点
示例:
1 | 给定一个链表: 1->2->3->4->5,和n = 2 |
说明:
给定的n保证是有效的
进阶:
你能尝试使用一趟扫描实现吗?
1 | /** |
反转链表
反转一个单链表
进阶:
链表可以迭代或递归地反转。你能够两个都实现一遍
1 | class Solution { |
合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
1 | class Solution { |