![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 54
坚持学算法
这个作者很懒,什么都没留下…
展开
-
LeetCode 283. 移动零 Move Zeroes
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。双指针两次遍历public void moveZeroes(int[] nums) { // 先将非0元素都移动到数组前面 int j = 0; for(int i = 0; i < nums.leng原创 2021-06-01 20:52:12 · 115 阅读 · 0 评论 -
LeetCode 203. 移除链表元素 Remove Linked List Elements
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:![image.png](https://img-blog.csdnimg.cn/img_convert/bc800532e1b58fa4e307dcdac7630f26.png#align=left&display=inline&height=111&原创 2021-06-01 20:51:40 · 132 阅读 · 0 评论 -
LeetCode 217. 存在重复元素 Contains Duplicate
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true哈希表public boolean containsDuplicate(int[] nums) { Set<Integer原创 2021-06-01 20:50:07 · 147 阅读 · 1 评论 -
LeetCode 142. 环形链表 II Linked List Cycle II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?![](https://img-blog.csdnimg.cn/img_convert/375dd30c1a72d14f原创 2021-06-01 20:49:23 · 94 阅读 · 0 评论 -
LeetCode 1290. 二进制链表转整数 Convert Binary Number in a Linked List to Integer
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出:1示例 4:输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]输出:18880示例 5:输入:原创 2021-04-25 22:12:59 · 71 阅读 · 0 评论 -
LeetCode 876. 链表的中间结点 Middle of the Linked List
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next原创 2021-04-25 22:10:17 · 53 阅读 · 0 评论 -
LeetCode 387. 字符串中的第一个唯一字符 First Unique Character in a String
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2**提示:**你可以假定该字符串只包含小写字母。利用哈希表统计字符次数public int firstUniqChar(String s) { // 统计每个字符出现的次数 Map<Character, Integer> timesCountMap = new HashMap<>原创 2021-05-06 23:08:51 · 83 阅读 · 0 评论 -
LeetCode 344. 反转字符串 Reverse String
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]双指针算原创 2021-05-06 22:32:11 · 63 阅读 · 0 评论 -
LeetCode 268. 丢失的数字 Missing Number
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题? 示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字原创 2021-05-07 23:06:32 · 180 阅读 · 0 评论 -
LeetCode 234. 回文链表 Palindrome Linked List
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解题思路回文的意思就是从两端往中间走,每一个节点都是相同的,类似于一个镜像数组双向遍历利用数组下标,可以直接依次双向移动索引,逐一比较遍历,当索引相同(奇数元素数量)时或者 left > right(偶数元素数量) 则表示遍历结束原创 2021-04-25 22:06:49 · 107 阅读 · 0 评论 -
LeetCode 88. 合并两个有序数组 Merge Sorted Array
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例2:输入:nums1 = [1], m = 1原创 2021-04-18 21:17:58 · 161 阅读 · 0 评论 -
LeetCode 83. 删除排序链表中的重复元素 Remove Duplicates from Sorted List
存在一个按升序排列的链表,给你这个链表的头节点 head,请你删除所有重复的元素,使每个元素只出现一次,返回同样按升序排列的结果链表。输入:head = [1,1,2]输出:[1,2]输入:head = [1,1,2,3,3]输出:[1,2,3]因为给定的链表是排序好的,重复元素一定是连续的,只需两两比较元素判断是否重复,如果重复则移除元素即可class ListNode { int val; ListNode next; List原创 2021-04-25 22:20:57 · 63 阅读 · 0 评论 -
LeetCode 66. 加一 Plus One
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]提示:原创 2021-04-25 23:24:51 · 72 阅读 · 0 评论 -
LeetCode 35. 搜索插入位置 Search Insert Position
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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暴力解法:遍历数组依次检查public int searchInsert(int[] nums, int t原创 2021-04-25 23:07:57 · 62 阅读 · 0 评论 -
LeetCode 27. 移除元素 Remove Element
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,原创 2021-04-25 22:49:56 · 63 阅读 · 0 评论 -
LeetCode 26. 删除有序数组中的重复项 Remove Duplicates from Sorted Array
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicates(num原创 2021-04-18 21:27:03 · 61 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表 Merge Two Sorted Lists
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1 = [], l2 = []输出:[]示例3:输入:l1 = [], l2 = [0]输出:[0]使用两个指针,分别指向两个链表头结点比较两个结点,将节点值小的放到新链表中(若节点值相同,可约定先取某一个链表的阶段,比如先取蓝色链表中的节点)依次遍历链表,指针移动到下原创 2021-04-25 22:18:58 · 308 阅读 · 0 评论 -
LeetCode 19. 删除链表的倒数第 N 个结点 Remove Nth Node From End of List
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。![](https://img-blog.csdnimg.cn/img_convert/2ba5d38d79effbe6b897737bc5400fb8.png#align=left&display=inline&height=222&margin=[object Object]&originHeight=222&originWidth=542&size=0&status=done&a原创 2021-05-06 22:36:17 · 58 阅读 · 0 评论 -
LeetCode 18.四数之和 4Sum
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a, b, c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例1:输入:nums = {1,0,-1,0,-2,2},target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例2:输入:nums = [], target = 0输出:[]暴力解原创 2021-04-18 20:59:50 · 63 阅读 · 0 评论 -
LeetCode 15.三数之和 3Sum
给你一个包含 n 个整数的数组 nums ,判断 nums 中是否存在三个元素 a, b, c, 使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2:输入:nums = []输出:[]示例3:输入:nums = [0]输出:[]暴力解法public List<List<Integer>&g原创 2021-04-18 20:58:24 · 64 阅读 · 0 评论 -
LeetCode 7. 整数反转 Reverse Integer
给你一个 32 位的有符号整数 x,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [-2,2-1],就返回 0 。假设环境不允许存储 64 位整数(有符号或无符号)。示例1:输入:x = 123输出:321示例2:输入:x = -123输出:-321示例3:输入:x = 120输出:21示例4:输入:x = 0输出:0示例分析x = 123 result = 0将 x 除以 10, 商为 12, 余数为 3 , 将商重新赋值到原创 2021-05-06 22:33:30 · 84 阅读 · 0 评论 -
LeetCode 2. 两数相加 Add Two Numbers
给你两个 非空 的链表,表示两个非负的整数。他们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例1:![image.png](https://img-blog.csdnimg.cn/img_convert/0c488b6ad8d02896ea5cfc096a17b50c.png#align=left&display=inline&height=17原创 2021-05-06 22:34:44 · 69 阅读 · 0 评论 -
LeetCode 1.两数之和 Tow Sum(Java)
给定一个整数数组 nums 和一个整数目标值 target ,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1原创 2021-04-18 20:57:50 · 162 阅读 · 0 评论 -
LeetCode 面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?题意理解1.移除重复节点2.链表未排序3.保留最开始出现的节点、链表遍历,只能顺序遍历,无法回头,如果需要判断当前节点是否是重复节点,那么我们需要记录被原创 2021-04-18 21:09:01 · 237 阅读 · 0 评论