leetcode
细雨生寒未有霜
这个作者很懒,什么都没留下…
展开
-
148. 排序链表(重要)
题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sort-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路 归并 /** * Definition for singly-linked list. * public class ListNod原创 2021-07-30 16:25:13 · 59 阅读 · 0 评论 -
468. 验证IP地址
代码 借鉴:原主 class Solution { public String validIPAddress(String IP) { //判断是否有'.' if (IP.indexOf('.') != -1){ //有就判断是否是IPV4 if (isIpv4(IP)){ return "IPv4"; } } //判断是否有':'原创 2021-07-25 10:55:16 · 71 阅读 · 0 评论 -
54. 螺旋矩阵
题目 在一些笔试中遇到过类似的,当时不会。。。 力扣原题 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 思路 模仿这个大佬的思路 从左到右,top固定,i = left 移动,遍历完top++ 从右上到右下,right固定,i = top 移动,遍历完right– 从右到左,bottom固定,i = right 移动, 遍历完bottom– 从左下到左上,left固定,i = bottom移动,遍历完left++ 注意:每个for循环都要加index原创 2021-07-24 11:19:09 · 67 阅读 · 0 评论 -
3. 无重复字符的最长子串
3. 无重复字符的最长子串 力扣链接 思路 滑动窗口,fast和slow都是向后移动,slow记录左,fast向后移动, 如果fast遇到重复的,修改slow的值,每次都要改变max的值,hashMap用于判断是否有重复的值 class Solution { public int lengthOfLongestSubstring(String s) { int len =s.length(); HashMap<Character, Integer> ha原创 2021-07-23 11:44:37 · 50 阅读 · 0 评论 -
剑指 Offer 33. 二叉搜索树的后序遍历序列
剑指 Offer 33. 二叉搜索树的后序遍历序列 力扣链接 思路 先找到比 root 小的数列,即这个数列下一位就大于root,假设为midIndex midIndex之前都是比root 小的,后面从midIndex遍历到right 用midIndex后面的数与root比较,如果有还有小于root的说明不是后续遍历 如果midIndex后面的数都大于root,则从midIndex左右开始递归判断 class Solution { private int[] postorder; pu原创 2021-07-23 11:06:00 · 49 阅读 · 0 评论 -
面试题 02.08. 环路检测
文章目录面试题 02.08. 环路检测方法一(快慢指针)方法二(哈希表) 面试题 02.08. 环路检测 力扣链接 * 方法一(快慢指针) 时间复杂度:O(N) 空间复杂度:O(1) /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next =原创 2021-07-23 10:38:43 · 73 阅读 · 0 评论 -
乘积最大子数组、连续子数组的最大和
乘积最大子数组 class Solution { public int maxProduct(int[] nums) { int len = nums.length; int[] maxProduct = new int[len]; int[] minProduct = new int[len]; //记录结果最大值 int result = nums[0]; //最大值数组 maxPro原创 2021-07-17 11:06:16 · 92 阅读 · 0 评论 -
链表排序相关
147. 对链表进行插入排序 思路: 假设当前节点之前都是排好序的 如果当前节点的下一个节点的值比当前节点大,则当前节点向后移动 如果当前节点大于后一个节点,则把后一个节点移到当前节点前面 然后在当前节点之前找位置插入 pre从头开始找,如果 pre.next.val < current.next.val ,则pre = pre.next,就是找到比current.next 这个节点大的节点位置,插入到前面 /** * Definition for singly-linked list. *原创 2021-07-12 16:35:21 · 52 阅读 · 0 评论 -
92. 反转链表 II
92. 反转链表 II 力扣题目 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 代码 思路:p固定不变,不断把q后面的节点插入到p后面,用头插法 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;原创 2021-07-07 11:55:23 · 192 阅读 · 0 评论 -
11. 盛最多水的容器
11. 盛最多水的容器 力扣链接 描述 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 代码 class Solution { public int maxArea(int[] height) { int len = height.length;原创 2021-07-06 19:20:31 · 47 阅读 · 0 评论