当前位置: 首页 > news >正文

广东官方网站建设郑州二七区

广东官方网站建设,郑州二七区,c语言网站,wordpress首页如何增加模块废话不多说#xff0c;喊一句号子鼓励自己#xff1a;程序员永不失业#xff0c;程序员走向架构#xff01;本篇Blog的主题是【原地哈希】#xff0c;使用【数组】这个基本的数据结构来实现#xff0c;这个高频题的站点是#xff1a;CodeTop#xff0c;筛选条件为…废话不多说喊一句号子鼓励自己程序员永不失业程序员走向架构本篇Blog的主题是【原地哈希】使用【数组】这个基本的数据结构来实现这个高频题的站点是CodeTop筛选条件为目标公司最近一年出现频率排序由高到低的去牛客TOP101去找只有两个地方都出现过才做这道题CodeTop本身汇聚了LeetCode的来源确保刷的题都是高频要面试考的题。 明确目标题后附上题目链接后期可以依据解题思路反复快速练习题目按照题干的基本数据结构分类且每个分类的第一篇必定是对基础数据结构的介绍。 缺失的第一个正整数【MID】 又是一道考验数组结构与哈希表结合的题 题干 直接粘题干和用例 解题思路 原题解地址由于题目要求我们「只能使用常数级别的空间」而要找的数一定在 [1, N 1] 左闭右闭这里 N 是数组的长度这个区间里。因此我们可以就把原始的数组当做哈希表来使用。事实上哈希表其实本身也是一个数组我们要找的数就在 [1, N 1] 里最后 N 1 这个元素我们不用找。因为在前面的 N 个元素都找不到的情况下我们才返回 N 1 ** 按照桶排序思路进行预处理保证 1 出现在 nums[0] 的位置上2 出现在 nums[1] 的位置上…n 出现在 nums[n - 1] 的位置上。不在 [1, n] 范围内的数不用动**。例如样例中 [3,4,-1,1] 将会被预处理成 [1,-1,3,4]。遍历 nums找到第一个不在应在位置上的 [1, n] 的数。如果没有找到说明数据连续答案为 n 1。例如样例预处理后的数组 [1,-1,3,4] 中第一个 nums[i] ! i 1 的是数字 2i 1。 这个思想就相当于我们自己编写哈希函数这个哈希函数的规则特别简单那就是数值为 i 的数映射到下标为 i - 1 的位置。 代码实现 给出代码实现基本档案 基本数据结构数组 辅助数据结构无 算法迭代 技巧双指针逆序双指针 其中数据结构、算法和技巧分别来自 10 个数据结构数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树10 个算法递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法技巧双指针、滑动窗口、中心扩散 当然包括但不限于以上 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可*** param nums int整型一维数组* return int整型*/public int minNumberDisappeared (int[] nums) {// 原地hash元素位置1元素值(i1nums[i]inums[i]-1)才满足各回各家先将元素归位for (int i 0; i nums.length; i) {while (nums[i] 0 nums[i] nums.length nums[i] ! nums[nums[i] - 1]) {swap(nums, i, nums[i] - 1);}}// 遍历一遍数组找到第一个不符合条件的返回for (int i 0; i nums.length; i) {if (nums[i] ! i1) {return i 1;}}return nums.length 1;}// 交换元素位置private void swap(int[] nums, int i, int j) {int temp nums[i];nums[i] nums[j];nums[j] temp;} }原地哈希就相当于让每个数字n都回到下标为n-1的家里那些没有回到家里的就成了流浪汉他们要么是根本就没有自己的家数字小于等于0或者大于nums.size()要么是自己的家被别人占领了出现了重复。这些流浪汉被临时安置在下标为i的空房子里之所以有空房子是因为房子i的主人i1失踪了数字i1缺失。因此通过原地构建哈希让各个数字回家我们就可以找到原始数组中重复的数字还有消失的数字。 为什么内部是while循环我们的目标是把nums[i]在[1,N]范围内的数字归位所以每个有家的流浪汉都要找到它的房子i位置上的流浪汉找到了自己的房子nums[i]-1但nums[i]-1房子被赶出来的流浪汉的房子却未必是i位置它需要临时住在i并继续找自己的房子。所以直到nums[i]-1换回来的流浪汉正好对应i这个房子或这个流浪汉压根就没房子非【1-N】范围的值这次寻找才算结束判断条件为什么有nums[i] 0 nums[i] nums.length对于[7,8,9,10]这种数来说因为不可能满足哈希映射条件交换操作还会导致数组越界所以没必要也不能进行移动流浪汉压根没房子判断条件为什么是 nums[i] ! nums[nums[i] - 1]。因为对于[3,4,3,1]这种数来说i!nums[i]-1虽然满足条件但是交换后因为还是[3,4,3,1]所以会导致一直交换死循环所以要采取更严苛的判断条件避免重复元素交换也就是交换位置上的数不能相同而且值得注意的是满足 nums[i] ! nums[nums[i] - 1]其实就一定满足i!nums[i]-1 复杂度分析 时间复杂度O(N)。遍历了一遍数组时间复杂度为ON空间复杂度O(1)。 需要建立长度为 mn 的中间数组
http://www.dnsts.com.cn/news/240339.html

相关文章:

  • 网站域名必须备案吗网站内链如何布局
  • 广东建设信息网站塔吊查询黄村做网站的公司
  • 深圳建站的公司网站推广设计
  • 高端营销网站定制青岛网页建站模板
  • 合肥企业网站建设工wordpress logo底色
  • 建立一个网站如何开通账号手机网站自适应屏幕
  • 地坪漆东莞网站建设技术支持河北建设集团网站
  • 备案网站有哪些资料山西中宇建设集团网站
  • vc 做网站源码wordpress怎么恢复到原来版本
  • 用dw做音乐网站系统的代码单位网站备案
  • 南昌做网站开发的公司有哪些邢台手机网站制作
  • 开发app的网站嘉兴哪家公司做网站比较好的
  • 网站建设培训业务心得怎么建设一个手机网站
  • 建com网站免费扑克网站代码
  • 郑州锐途网站建设wordpress 视频弹窗
  • 世界顶尖名表瑞士网站不要中国手表网站个人主页文案
  • 网站建设开题报告ppt深圳宝安建设工程交易中心
  • 招代理的网站建设公司企业网站功能模块设计
  • 徐汇网站建设推广整合营销的特点有哪些
  • 扬州网站定制网络链接推广
  • 傻瓜式建站软件下载比特币做空网站
  • 做网站如何购买服务器吗品牌注册公司
  • 公司网站建设需求说明书如何制作游戏?
  • 南京快速建站公司etherna 简洁商业企业wordpress
  • 国内最最早做虚拟货币的网站响应式网站模板之家
  • 设置网站域名解析和网站主机绑定海淀区seo搜索优化
  • 做网批有专门的网站吗网站开发计算机配置
  • 专业做毕业设计网站设计什么是网络营销的核心竞争力
  • 分类网站怎么做seo58网站怎么做品牌推广
  • 资源网站建设做网站收费多少