算法
文章平均质量分 52
*啥也不知道*
这个作者很懒,什么都没留下…
展开
-
快速排序(Java实现)
快速排序,Java原创 2023-03-22 17:02:30 · 159 阅读 · 0 评论 -
相交链表(简单)
相交链表(简单)题目思路 本题要求找出两个单链表的相交节点,只需要找出A链表和B链表第一个相同的节点,即相交节点,所以可以先使用set集合存储任意一条单链表的所有节点,再遍历另外一条单链表,如果集合中存在相同的节点,则找出了相交节点(集合中存储的是节点的地址,所以不用考虑重复问题)。进阶 要使空间复杂度为O(1),则不能使用上述方法,这时考虑使用同时遍历两条单链表,比较节点地址的方法,如下图:假设单链表A、B的长度分别为a、b,相交节点为c1,分别创建指针nodeA,nodeB从A、原创 2021-10-01 20:44:40 · 230 阅读 · 0 评论 -
反转链表(简单)
反转链表(简单)题目代码实现/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.n原创 2021-09-27 20:29:22 · 69 阅读 · 0 评论 -
二叉搜索子树的最大键值和
二叉搜索子树的最大键值和(困难)题目:思路分析题目要求返回任意二叉搜索子树的最大键值和,显然,这题的思路就是围绕子树是否是BST和树的遍历方式展开,提到树,不可避免的想到了递归。首先,判断以node节点为根的树是否是二叉搜索树主要有以下步骤:以node节点的左右子节点为根的树是否是BST。左子树的最大值小于node.val && 右子树的最小值大于node.val。其次,要获取最大键值和,那么最好选择后序遍历,这样就能够获得左右子节点遍历后返回的结果集。实现原创 2021-09-15 21:57:29 · 136 阅读 · 0 评论 -
最小覆盖子串——滑动窗口
最小覆盖子串(困难)题目java实现class Solution { public String minWindow(String s, String t) { HashMap<Character, Integer> needs = new HashMap<>(); HashMap<Character, Integer> window = new HashMap<>(); for (int i原创 2021-09-11 14:56:27 · 118 阅读 · 0 评论 -
环形链表——返回环开始的节点
环形链表Ⅱ解法一:使用HashSet存储每个节点:public class Solution { public ListNode detectCycle(ListNode head) { ListNode node = head; HashSet<ListNode> set = new HashSet<ListNode>(); while (node != null) { if (set.cont原创 2021-09-09 21:04:17 · 181 阅读 · 0 评论 -
爱吃香蕉的珂珂
爱吃香蕉的珂珂(中等)题目思路本题给定了时间h,要求速度k的最小值,那么首先要知道的是速度和所需时间的函数关系。假设速度为x,所需时间为hours,则 - piles[i] <= x,则hours++; - piles[i] > x - piles[i] % x == 0,则hours = hours + piles[i] / x; - piles[i] % x != 0,则hours = hours + piles[i] / x + 1;确定了hours(x)原创 2021-09-08 10:42:21 · 113 阅读 · 0 评论 -
二分搜索(有序数组)
文章目录一、二分查找1.例题2.实现3.解析二、寻找左右边界的二分查找1.例题2.实现3.解析一、二分查找1.例题二分查找(简单)2.实现class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left <= right) { int mid =原创 2021-09-07 11:40:22 · 88 阅读 · 0 评论