【LeetCode刷题-滑动窗口】-- 239.滑动窗口最大值
239.滑动窗口最大值 分析: 方法:优先队列 对于最大值,可以使用优先队列(堆),其中的大根堆可以帮助实时维护一系列元素中的最大值 在本题中,初始时,将数组nums的前k个元素放入优先队列中,每当我们向右移动窗口时,我们就可以把一个新的元素放入优先队列中,此时堆顶的元素就是堆中所有元素的最大值,然而这个最大值可能并不在滑动窗口中,在这种情况下,这个值在数组nums中的位置出现在滑动窗口左边界的左侧...
【LeetCode刷题-双指针】--259.较小的三数之和
259.较小的三数之和 方法:排序+双指针 class Solution { public int threeSumSmaller(int[] nums, int target) { Arrays.sort(nums); int k = 0; for(int i = 0;i<nums.length;i++){ int start = i + 1,end = nums.length - 1; whil...
oj刷题-C语言版
1. A + B 题目 输入两个整数,求这两个整数的和是多少。 输入格式 输入两个整数A,B ,用空格隔开 输出格式 输出一个整数,表示这两个数的和 数据范围 0≤A,B≤108 样例输入:3 4样例输出:7 AC代码C: #include <stdio.h>int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d\n",a+b); retu...
leetcode刷题日记:110. Balanced Binary Tree(平衡二叉树)
题目给了我们一个二叉树要让我们来判断这一个二叉树是不是平衡二叉树。 要想判断一棵树是不是平衡二叉树,我们得首先知道平衡二叉树的定义是什么,平衡二叉树指的是这样的树它的左子树的高度与右子树高度的差的绝对值不能超过1,而且它的左子树是一颗平衡二叉树,它的右子树也是一颗平衡二叉树。画出图示如下: 我们可以看出这一个二叉树的左子树是高度为3的一棵树,右子树为高度为1的一颗子树,所以这不是一颗平衡二叉树。 上...
【LeetCode刷题-二分查找】--704.二分查找
704.二分查找 class Solution { public int search(int[] nums, int target) { if(nums.length == 0){ return -1; } int left = 0,right = nums.length - 1; while(left <= right){ int mid = (right - left) / 2 + left;...
【LeetCode刷题-二分查找】--658.找到K个最接近的元素
658.找到K个最接近的元素 方法一:二分查找+双指针 假设数组长度为n,数组arr已经按照升序排序,可以将数组arr分为两部分,前一部分所有元素[0,left]都小于x,后一部分[right,n-1]都大于等于x,left与right都可以通过二分查找获得left和right指向的元素都是各自部分最接近x的元素,因此我们可以通过比较left和right指向的元素获取整体最接近x的元素,如果x-ar...
[python 刷题] 2866 Beautiful Towers II
[python 刷题] 2866 Beautiful Towers II 题目如下: 这个 以数组中的最后的值 7 作为山峰 因为山峰是可以允许作为最高的存在,因此这里不需要做特殊的操作,直接更新 stack 和 left_sum 即可: 到这里, prefix 的处理就做完了,接着反向做 suffix 的处理,逻辑也是一样的,重新初始化 stack 和高度,重新走一遍循环: 以数组中的最后的值 7...
【LeetCode刷题-栈与队列】--232.用栈实现队列
232.用栈实现队列 class MyQueue { Deque<Integer> inStack; Deque<Integer> outStack; public MyQueue() { inStack = new ArrayDeque<Integer>(); outStack = new ArrayDeque<Integer>(); } public void push(int x) { inS...
【LeetCode刷题-链表】--876.链表的中间结点
876.链表的中间结点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { t...
【LeetCode刷题-链表】--203.移除链表元素
203.移除链表元素 方法:定义一个节点指向头节点head,避免头结点单独操作 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode...