【LeetCode】面试题总结 消失的数字 最小k个数

 1.消失的数字

两种思路

1.先升序排序,再遍历并且让后一项与前一项比较

2.转化为数学问题求等差数列前n项和 (n的大小为数组的长度),将根据公式求得的应有的和数与数组中实际的和作差


import java.util.*;
class Solution {public int missingNumber(int[] nums) {// 第一种/*Arrays.sort(nums);int len = nums.length;int val = 0;for(int i=0;i<len-1;i++) {if(nums[i+1]!=nums[i]+1) {val = nums[i]+1;break;}}if(val==0) {if(nums[nums.length-1]==nums.length){return 0;}return nums[nums.length-1]+1;}return val;*///第二种int n = nums.length;int sum1 = (n + n*n)/2;int sum2 = 0;for(int i:nums) {sum2 = sum2+i;}return sum1-sum2;}
}

2.最小K个数

优先级队列(默认情况是小根堆) + 比较器改变大小根堆 

第一种 :全部入优先级队列。

第二种 :先只进入k个数,再依次比较,小的加入,大的删除 这样队列中就一直只有k个元素,节省空间,时间。

总结

找第K大的元素  返回小根堆的根节点的值
找第K小的元素,返回大根堆的节点的值

 

 

import java.util.*;
class IntCmp implements Comparator<Integer>{@Overridepublic int compare(Integer o1, Integer o2) {return o2-o1;}
}
class Solution {public int[] smallestK(int[] arr, int k) {/*  第一种 数组中的数全部入优先级队列int[] ret = new int[k];if(arr.length==0) return ret;PriorityQueue<Integer> queue = new PriorityQueue<>(arr.length);for(int i = 0;i<arr.length;i++) {queue.offer(arr[i]);}for(int j = 0;j<k;j++) {ret[j] = queue.poll();} return ret;*//* 第二种 先只进入k个数,再依次比较,小的加入,大的删除 这样队列中就一直只有k个元素*/  //建立大根堆 使用比较器int[] ret = new int[k];if(arr.length==0 || k<=0) return ret;PriorityQueue<Integer> queue = new PriorityQueue<>(new IntCmp());for(int i=0;i<k;i++) {queue.offer(arr[i]);}for(int j=k;j<arr.length;j++) {int top = queue.peek();if(arr[j] < top) {queue.poll();queue.offer(arr[j]);}}for(int i = 0;i<k;i++) {ret[i] = queue.poll();}return ret;/* 找第K大的元素  返回小根堆的根节点的值找第K小的元素,返回大根堆的节点的值*/ }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第四十六天 | 139.单词拆分

代码随想录算法训练营第四十六天 | 139.单词拆分 139.单词拆分 139.单词拆分 题目链接 视频讲解 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典…

【LeetCode】227. 基本计算器 II

227. 基本计算器 II&#xff08;中等&#xff09; 方法&#xff1a;双栈解法 思路 我们可以使用两个栈 nums 和 ops 。 nums &#xff1a; 存放所有的数字ops &#xff1a;存放所有的数字以外的操作 然后从前往后做&#xff0c;对遍历到的字符做分情况讨论&#xff1a; 空格 …

安全测试-django防御安全策略

django安全性 django针对安全方面有一些处理&#xff0c;学习如何进行处理设置&#xff0c;也有利于学习安全测试知识。 CSRF 跨站点请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;CSRF&#xff09;是一种网络攻击方式&#xff0c;攻击者欺骗用户在自己访问的网…

软考高级系统架构设计师系列论文真题二:论面向服务架构设计极其应用:真题分析、理论素材、精品范文赏析

软考高级系统架构设计师系列论文真题二:论面向服务架构设计极其应用:真题分析、理论素材、精品范文赏析 一、论面向服务架构设计极其应用二、论文解题思路1.找准核心论点2.理论素材准备三、精品范文赏析1.摘要2.正文3.总结一、论面向服务架构设计极其应用 企业应用集成(EAI)是…

Python 包管理(pip、conda)基本使用指南

Python 包管理 概述 介绍 Python 有丰富的开源的第三方库和包&#xff0c;可以帮助完成各种任务&#xff0c;扩展 Python 的功能&#xff0c;例如 NumPy 用于科学计算&#xff0c;Pandas 用于数据处理&#xff0c;Matplotlib 用于绘图等。在开始编写 Pytlhon 程序之前&#…

【力扣】2813 子序列最大优雅度

class Solution//诡异的数据结构维护反悔贪心 { public:long long findMaximumElegance(vector<vector<int>>& items, int k){sort(items.begin(), items.end(), [](const auto &a, const auto &b){return a[0] > b[0];});//奇妙的排序方法long lon…

K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(上)

温故知新 &#x1f4da;第一章 前言&#x1f4d7;背景&#x1f4d7;目的&#x1f4d7;总体方向 &#x1f4da;第二章 基本环境信息&#x1f4d7;机器信息&#x1f4d7;软件信息&#x1f4d7;部署用户kubernetes &#x1f4da;第三章 Kubernetes各组件部署&#x1f4d7;安装kube…

React内置函数之startTransition与useTransition

React内置函数之startTransition&#xff0c;useTransition 在React中&#xff0c;使用startTransition和useTransition这两个内置函数可以帮助我们更好地管理组件的过渡状态。这两个函数的出现&#xff0c;旨在提供一种简单而强大的方式&#xff0c;来处理组件状态的变化&…

Linux(实操篇一)

Linux实操篇 Linux(实操篇一)1. 常用基本命令1.1 帮助命令1.1.1 man获得帮助信息1.1.2 help获得shell内置命令的帮助信息1.1.3 常用快捷键 1.2 文件目录类1.2.1 pwd显示当前 工作目录的绝对路径1.2.2 ls列出目录的内容1.2.3 cd切换目录1.2.4 mkdir创建一个新的目录1.2.5 rmdir删…

Unity查找资源依赖关系

这个方法主要是发现资源乱用的情况&#xff0c;对应的逻辑可能要改一个才能用到自己的项目里面 [MenuItem("Tools/Prefab/查找选中资源依赖关系", false, 0)] public static void FindDependencies() { foreach (var guid in Selection.assetGUIDs…

CentOS 8 执行yum命令报错:Failed to set locale, defaulting to C.UTF-8

今天Docker新搞了一个CentOS镜像&#xff0c;在运行基于该镜像的容器&#xff0c;执行yum命令时&#xff0c;遇到了如下报错&#xff1a; [rootGC Administrator]# yum install -y yum-utils Failed to set locale, defaulting to C.UTF-8 CentOS Linux 8 - AppStream …

etcd学习入门

etcd有哪些独特的特性 etcd作为一个分布式键值存储系统&#xff0c;具有一些独特的特性&#xff0c;使其在分布式系统中得到广泛应用。以下是etcd的一些独特特性&#xff1a; 一致性: etcd使用Raft一致性算法来确保数据的一致性和可靠性。Raft算法能够处理网络分区、节点故障和…

Linux环境搭建SVN服务器并实现公网访问 - cpolar端口映射

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

Jedis

Jedis 使用Java操作redis Jedis是redis官方推荐的Java连接开发工具&#xff01; 使用Java操作redis的中间件 测试 导入对应的依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId&g…

一次js请求一般情况下有哪些地方会有缓存处理?

目录 1、DNS缓存 2、CDN缓存 3、浏览器缓存 4、服务器缓存 1、DNS缓存 DNS缓存指DNS返回了正确的IP之后&#xff0c;系统就会将这个结果临时储存起来。并且它会为缓存设定一个失效时间 (例如N小时)&#xff0c;在这N小时之内&#xff0c;当你再次访问这个网站时&#xff0…

【HashMap】key和value能否为null

【HashMap】key和value能否为null 【一】HashMap【二】HashTable【三】ConcurrentHashMap【四】测试代码【五】底层代码分析 【一】HashMap &#xff08;1&#xff09;结论&#xff1a;HashMap对象的key、value值均可为null HashMap 的 key 和 value 都可以为 null 值。在 Jav…

整数数组区间的插入与删除

相似题参考&#xff1a; 56. Merge Intervals - 力扣&#xff08;LeetCode&#xff09;合并区间 57. 插入区间 - 力扣&#xff08;LeetCode&#xff09; 1272. 删除区间 package Jerry;import org.junit.Assert; import org.junit.Test;import java.util.ArrayList; import…

Ubuntu20.04下安装搜狗输入法Linux版

Ubuntu20.04下安装搜狗输入法Linux版 参考搜狗输入法的官网安装指南&#xff1b; 第一步&#xff1a;打开搜狗输入法官网&#xff1b; https://shurufa.sogou.com/ 点击X86_64后将会自动跳转到搜狗输入法的安装指南中&#xff1b; 安装指南 Ubuntu搜狗输入法安装指南 搜狗…

Linux的Man Page知识记录

Man&#xff08;short for manual&#xff09; Page是Unix和Linux操作系统中的一个重要文档&#xff0c;提供命令、函数、系统调用等的详细介绍和使用说明。它是以纯文本的形式出现&#xff0c;通常在终端&#xff08;terminal&#xff09;中使用man命令访问。Man Page按照章节…

微信小程序【构建npm】使用记录

:: 问题 使用原生微信小程序开发时&#xff0c;通过官方 typescript 模板构建的小程序无法正确执行 构建npm 成功&#xff0c;从而导致我想通过 npm 安装并使用第三方库出现问题 :: 开发环境&#xff08;可参照&#xff09; 设备&#xff1a;macOS Ventura 13.0 微信开发者工…