摘要:
解决策略 建立一个大根堆和一个小根堆,用一个临时变量(count)来统计数据流的个数 当插入的数字个数为奇数时,使小根堆的个数比大根堆多1;当插入的数字个数为偶数时,使大根堆和小根堆的个数一样多 当总的个数为奇数时,中位数就是小根堆的堆顶;当总的个数为偶数时,中位数就是两个堆顶的值相加除以2 imp 阅读全文
摘要:
遍历解法 同时不断遍历两个链表,取出小的追加到新的头节点后,直至两者其中一个为空,再将另一者追加的新链表最后 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(-1); Li 阅读全文
摘要:
class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; while(curr != null) { ListNode nxt = curr.ne 阅读全文
摘要:
class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pre = new ListNode(0); pre.next = head; ListNode start = pre, end = 阅读全文
摘要:
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5 数据范围:链表长度满足 0≤n≤1000,链表中的值满足 1≤val≤1000 进阶:空间复杂度 O(n),时间复杂度 O( 阅读全文
摘要:
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 阅读全文
摘要:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 输入:nums = [0,1] 输 阅读全文
摘要:
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 提示: 1 <= arr.le 阅读全文
摘要:
class Solution { public int[] spiralOrder(int[][] matrix) { if(matrix.length == 0) return new int[0]; int l = 0, r = matrix[0].length - 1, t = 0, b = 阅读全文
摘要:
递归 按照深度优先的处理顺序,会先访问节点 1,再访问节点 2,接着是节点 3。之后是第二列的 4 和 5,最后是第三列的 6。 每次递归的时候都需要带一个 index(表示当前的层数),也就对应那个田字格子中的第几行,如果当前行对应的 list 不存在,就加入一个空 list 进去。 class 阅读全文