![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode
来旺
一个立体的人
展开
-
1752. 检查数组是否经排序和轮转得到
题目检查数组是否经排序和轮转得到难度简单给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。源数组中可能存在 重复项 。注意:我们称数组 A 在轮转 x 个位置后得到长度相同的数原创 2021-02-11 19:52:54 · 482 阅读 · 2 评论 -
703. 数据流中的第 K 大元素
题目数据流中的第 K 大元素难度简单设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。请实现 KthLargest 类:KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。int add(int val) 将 val 插入数据流&原创 2021-02-11 17:53:47 · 128 阅读 · 0 评论 -
leetcode665. 非递减数列
class Solution { public boolean checkPossibility(int[] nums) { int n = nums.length; int p=0,q=0; for(int i = 0;i<n-1;i++){ if(nums[i]>nums[i+1]){ p = i; q = i+1;原创 2021-02-07 20:17:16 · 161 阅读 · 0 评论 -
leetcode1423. 可获得的最大点数
思路:因为要求的是从首位拿的最大点数和,剩余的牌肯定是连续的,所以只要求出一个连续的长度为n-k的子数组和为最小的数组即可.class Solution { public int maxScore(int[] cardPoints, int k) { int n = cardPoints.length; k = n-k; int sum = 0,tot = 0; for(int i =0;i<k;i++){原创 2021-02-06 15:24:36 · 93 阅读 · 0 评论 -
leetcode643. 子数组最大平均数 I
class Solution { public double findMaxAverage(int[] nums, int k) { int n = nums.length; double res=0,t; int sum = 0; for(int i = 0;i<k;i++){ sum+=nums[i]; } res = (double)sum/k; for原创 2021-02-04 11:14:18 · 94 阅读 · 0 评论 -
leetcode480. 滑动窗口中位数
思路害,说来惭愧,一道hard的题目是暴力做的.来日再修改代码class Solution480 { public double[] medianSlidingWindow(int[] nums, int k) { int n = nums.length; double[] res = new double[n - k + 1]; int index = 0; List<Integer> l = new ArrayLi原创 2021-02-03 22:00:26 · 112 阅读 · 0 评论 -
leetcode424. 替换后的最长重复字符
做法双指针,暴力class Solution { public int characterReplacement(String s, int k) { if (s.equals("")) return 0; int n = s.length(); int Max = 0; Map<Character, Integer> m = new HashMap<>(); Deque<Charact原创 2021-02-02 21:22:32 · 85 阅读 · 0 评论 -
leetcode1128. 等价多米诺骨牌对的数量
解题思路二元组表示代码class Solution { private static int f(int x) { int res = 0; for(int i= 1;i<=x-1;i++)res+=i; return res; } public int numEquivDominoPairs(int[][] dominoes) { Map<Integer, Integer> m = new原创 2021-01-31 00:55:55 · 95 阅读 · 0 评论 -
leetcode959. 由斜杠划分区域
class Solution { public int regionsBySlashes(String[] grid) { int res = 1; int n = grid.length; int x = (n + 1) * (n + 1); int[] f = new int[x]; Union uf = new Union(x); //将边界全部连通 for (int i = 0;原创 2021-01-31 00:24:58 · 145 阅读 · 0 评论 -
leetcode724. 寻找数组的中心索引
class Solution { public int pivotIndex(int[] nums) { int n = nums.length,sum = 0,t = 0; for(int i : nums)sum+=i; for(int i=0;i<n;i++){ if(t==(sum-nums[i])/2.0)return i; t+=nums[i]; } re原创 2021-01-28 21:08:18 · 76 阅读 · 0 评论 -
leetcode1319. 连通网络的操作次数
class Solution1319 { public int makeConnected(int n, int[][] connections) { int size = connections.length; if (connections.length < n - 1) return -1; Union uf = new Union(n); for (int[] conn : connections) {原创 2021-01-23 00:58:51 · 90 阅读 · 0 评论 -
leetcode628.三个数的最大乘积
class Solution { public int maximumProduct(int[] nums) { //进行自动装箱 Integer[] arr = new Integer[nums.length]; for (int i = 0; i < nums.length; i++) arr[i] = nums[i]; //Collections.reverseOrder() Java带有的降序排序函数 Array原创 2021-01-20 11:24:48 · 104 阅读 · 0 评论 -
leetcode684.冗余连接
并查集class Solution { void unite(int x, int y, int[] f) { f[find(f[x],f)] = find(f[y], f); } int find(int x, int[] f) { if (x == f[x]) return f[x]; return f[x] = find(f[x], f); } public int[] findRedundantConnec原创 2021-01-20 11:17:42 · 103 阅读 · 0 评论 -
leetcode239.滑动窗口最大值
思路利用优先队列每个位置存储一个int[2],第一个位置存放这个数的大小,第二个位置存放索引。自定义排序规则为按照数值的大小从大到小排列,这样堆顶的数就永远是最大的。需要注意的点是:我们并不需要在窗口每次移动的时候将最大值移出,除非最大值不在窗口内(这就是数组中索引的作用),利用while循环将不属于窗口的值移出.class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int n = nums.l原创 2021-01-20 11:15:12 · 69 阅读 · 0 评论 -
leetcode1584.连接所有点的最小费用
class Solution { public int minCostConnectPoints(int[][] points) { int n = points.length; Point[] pointArr = new Point[(n*(n-1))/2]; UnionFind uf = new UnionFind(n); int index = 0; for (int i = 0; i < n; i++)原创 2021-01-20 11:08:16 · 118 阅读 · 0 评论