- 博客(17)
- 资源 (4)
- 问答 (1)
- 收藏
- 关注
原创 【咸鱼刷LeetCode-19】 删除链表的倒数第 N 个结点(中等)
双指针的一个典型应用,快指针先走N步,然后双指针同时移动到最后,修改慢指针的后继。public ListNode removeNthFromEnd(ListNode head, int n) { ListNode slow = head; ListNode fast = head; while (n-- > 0) { fast = fast.next; } if (fast == null) { // 删除第一个结点
2022-03-22 15:45:57
253
原创 【咸鱼刷LeetCode-27】移除元素(简单)
与26类似public int removeElement(int[] nums, int val) { int pos = 0; while (pos < nums.length && val != nums[pos]) { pos++; } int i = pos; while (++i < nums.length) { if (nums[i] != val) { nums[pos++] = nums[i]
2022-03-22 11:35:21
59
原创 【咸鱼刷LeetCode-26】 删除有序数组中的重复项(简单)
移动指针即可public int removeDuplicates(int[] nums) { int cur = 0; int i = 1; int pos = 1; while (i < nums.length) { if (nums[cur] == nums[i]) { i++; continue; } if (nums[cur] != nums[i]) { if (i != pos) {
2022-03-21 21:06:14
56
原创 【咸鱼刷LeetCode-24】两两交换链表中的节点(中等)
解法一:交换指针public ListNode swapPairs(ListNode head) { if (head == null || head.next == null) { return head; } ListNode newHead = head.next; ListNode cur = head; ListNode next = cur.next; ListNode temp = null; while (next
2022-03-21 20:17:53
425
原创 【咸鱼刷LeetCode-11】盛最多水的容器(中等)
双指针从两边向中间移动,寻找最大面积。 /** * No.11 * @param height * @return */ public int maxArea(int[] height) { int maxSrea = 0; int left = 0; int right = height.length - 1; while (left < right) { maxSrea = Math.max(
2021-04-15 15:48:18
66
原创 【咸鱼刷LeetCode-25】K 个一组翻转链表(困难)
反转链表基本分为三种类型:1.反转整个链表;2.反转前N个节点;3.反转中间第M到第N个节点。(第2种类型可以看作是第3种类型在M=1的一种情况);k个一组反转其实就是反转中间N个节点的类型;class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode b = head; for (int i = 0; i < k; i++) { if (b == null) {.
2021-04-13 12:19:13
60
原创 【咸鱼刷LeetCode-92】 反转链表 II(中等)
反转链表基本分为三种类型:1.反转整个链表;2.反转前N个节点;3.反转中间第M到第N个节点。(第2种类型可以看作是第3种类型在M=1的一种情况)链表反转两种常用思路:1.遍历链表直接修改节点next指针(借助临时节点);2.递归。如果节点有value值,输出的结果是以节点value值衡量,那么还有第三种解法:直接交换节点的value值(类似数组反转?)。本质上还是跟上面说到的类型1相似。思路1:遍历链表直接修改next/** * 非递归遍历链表 * @param head.
2021-04-09 17:38:11
73
原创 【咸鱼刷LeetCode-9】 回文数(简单)
先过滤掉一些不需要计算的数:负数、个位数、10的倍数等等。然后把数反转,和原数比较相等就是回文数。 public boolean isPalindrome(int x) { if (x < 0 || x == 10 || x % 10 == 0&&x!=0) { return false; } if (x <= 9) { return true; } int xCpoy = x; int re
2021-04-02 18:25:38
58
原创 【咸鱼刷LeetCode-8】 字符串转换整数 (atoi)(中等)
注意一些状态的判断就可以。不过感觉代码太长了,不够简洁= =!public int myAtoi(String s) { int length = s.length(); if (length == 0) { return 0; } int left = 0; int right = 0; boolean pos = true; boolean posFlag = false; boolean skip0 = true;
2021-04-02 12:43:03
118
原创 【咸鱼刷LeetCode-7】 整数反转(简单)
public int reverse(int x) {if (x >= -9 && x <= 9) {return x; }long n = 0;while (x != 0) {n = n*10 + x%10;x = x/10;}return (int)n == n ? (int)n : 0;}
2021-04-01 20:18:37
50
原创 【咸鱼刷LeetCode-6】 Z 字形变换(中等)
将字符串按Z字型放入二维数组中,然后遍历按行遍历二维数组,得到结果。主要计算每个字符在数组中的位置即可。行数就是方法第二个入参,数组列数的计算:每numRows + numRows - 2个数为一组,前numRows个数一列,后 numRows - 2个数,每个数一列;不过这样的方式除了遍历字符串以外,还要额外扫描一次二维数组,增加耗时。按照分组的思路(每numRows + numRows - 2个数为一组,前numRows个数一列,后 numRows - 2个数,每个数一列),最后输出的结果从
2021-04-01 17:24:24
130
原创 【咸鱼刷LeetCode-5】最长回文子串(中等)
提示:1 <= s.length <= 1000 s仅由数字和英文字母(大写和/或小写)组成【解】英文字母ASCII值为65~90,97~122。
2021-03-30 17:59:38
68
原创 【咸鱼刷LeetCode-4】寻找两个正序数组的中位数(困难)
给定两个大小为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5来源:力扣(LeetCode)链接:https://lee...
2020-05-31 19:47:38
172
原创 【咸鱼刷LeetCode-3】无重复字符的最长子串(中等)
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列,不是子串...
2020-05-29 18:50:13
170
原创 【咸鱼LeetCode-0】写在第一篇(???)
生活所迫,没看过源码,只会CRUD的咸鱼开始跟风刷个LeetCode,开专栏博文算是想对每题做个总结吧,便于以后回顾复习,尽量每题都写,不分难易,希望能有所进步。冲!咸鱼突击!!!
2020-05-28 20:05:47
93
原创 【咸鱼刷LeetCode-2】两数相加(中等)
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807...
2020-05-28 20:04:25
111
原创 【咸鱼刷LeetCode-1】两数之和(简单)
给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]【解】1、直观解法:两层循环,时间复杂度O()。但是执行结果并不理想,只战胜了35%的提交记录,10ms以内有提交记录占了很...
2020-05-28 19:48:54
208
1
mac 搜狗输入法 中英文切换问题
2021-03-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人