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

硬件工程师都没人干了西安优化seo托管

硬件工程师都没人干了,西安优化seo托管,阿里云做网站买什么软件,app网站区别面试题3 数组中重复的数字 题 目 #xff1a;找出数组中重复的数字。在一个长度为n的数组里的所有数字都在0 ~ n-1的范围内。数组中某些数字是重复的#xff0c;但不知道有几个数字重复了#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如找出数组中重复的数字。在一个长度为n的数组里的所有数字都在0 ~ n-1的范围内。数组中某些数字是重复的但不知道有几个数字重复了也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如如果输入长度为7 的数组2,3, 1,0, 2, 5, 3 , 那么对应的输出是重复的数字2 或者3。先把输入的数组排序。从排序的数组中找出重复的数字是一件很容易的事情只需要从头到尾扫描排序后的数组就可以了。排序一个长度为n的数组需要O(nlogn)的时间还可以利用哈希表来解决这个问题。从头到尾按顺序扫描数组的每个数字每扫描到一个数字的时候都可以用0(1)的时间来判断哈希表里是否已经包含了该数字。如果哈希表里还没有这个数字就把它加入哈希表。如果哈希表里已经存在该数字就找到一个重复的数字。这个算法的时间复杂度是0(n)但它提高时间效率是以一个大小为o(n)的哈希表为代价的。我们再看看有没有空间复杂度是0(1)的算法。如果这个数组中没有重复的数字那么当数组排序之后数字i将出现在下标为 i 的位置。由于数组中有重复的数字有些位置可能存在多个数字同时有些位置可能没有数字。现在让我们重排这个数组。从头到尾依次扫描这个数组中的每个数字。当扫描到下标为i的数字时首先比较这个数字(用m表示)是不是等于i. 如果是则接着扫描下一个数字如果不是则再拿它和第 m 个数字进行比较。如果它和第m个数字相等就找到了一个重复的数字(该数字在下标为i和m 的位置都出现了)如果它和第m个数字不相等就把第i个数 字和第m个数字交换把m 放到属于它的位置。接下来再重复这个比较、 交换的过程直到我们发现一个重复的数字例子数组{2,3,1,0,2,5,3};数组的第0个数字(从0开始计数)是2与他的下标不匹配因此将a[0]元素指定的坐标2互换换完之后的结果是{1,3,2,0,2,5,3};这个时候0号元素是1仍然和小标不匹配继续更换更换之后的结果是{3,1,2,0,2,5,3};接下来继续交换第0号元素和第3号元素{0,1,2,3,2,5,3};0号元素、1号元素、2号元素、3号元素均匹配当4号元素对应的数值是2和2号元素重复因此找到了一个重复的数字 class Solution { public:int findRepeatNumber(vectorint nums) {int length nums.size();/* if (length 0){return -1;}for (int i 0; i length; i) {if (nums[i] 0 || nums[i] length){return false;}}*/for (int i 0; i length; i) {while (nums[i] ! i){if (nums[i] nums[nums[i]]){return nums[i];} else{int temp nums[i];nums[i] nums[temp];nums[temp] temp;}}}return -1;} };Leetcode对应的题目地址 第二种解法 使用map第一次遍历元素key是元素的本身数值value是元素出现的次数存储所有的元素和出现次数的相关信息第二次遍历元素查找元素出现的次数大于等于2的返回对应的元素 int findRepeatNumber_3(std::vectorint nums) {std::mapint,int map{};int length nums.size();for (int i 0; i length; i) {map[nums[i]];}for (auto i map.cbegin(); i ! map.cend(); i) {if (i-second 2){return i-first;}}return -1;}第三种解法 使用无需map将元素加入map的时候就要判定是不是之前已经存在了此元素如果存在此元素将其返回 int findRepeatNumber_2(std::vectorint nums) {std::unordered_mapint,int map{};int length nums.size();for (int i 0; i length; i) {if (map.find(nums[i]) ! map.end()){return nums[i];} else{map[nums[i]];}}return -1;}第四种解法 将元素按照次序进行排序然后判断相邻元素是否相等如果相等则将其返回
http://wiki.neutronadmin.com/news/28912/

相关文章:

  • 网站滑动效果怎么做集团响应式网站建设
  • wordpress建站导航用DW 做响应式网站
  • 北京做网站网络公司开发板arduino
  • 公司建一个网站吗wordpress路径错误
  • 免费个人网站昌乐网站设计
  • 沧州市网站建设价格做网站送优化
  • 小说网站充值接口怎么做的重庆知名设计公司有哪些
  • 做网站还是做微信公众号vmware做网站步骤
  • 最火爆的国际贸易网站wordpress全自动发布
  • 极简资讯网站开发wordpress 维护中
  • 最新的网站开发框架怎么提交网站关键词
  • 网站开发设计思想报告半夜一分快三app推荐直播下载
  • 关于茶网站模板地域文化创意产网站建设规则
  • seo站长综合查询南京做网站品牌
  • 长沙有哪些做网站的公司个人网站建设的意义
  • 大型网站设计php做网站验证码的设计
  • 中山优秀网站建设如何dns解析网站
  • 太仓企业网站建设企业网站推广方案
  • js做网站登录界面免费的微信小程序模板
  • 泰州网站推广见效快广东网页空间购买
  • 数据库检索网站建设泰安做网站建设的
  • 目前网站开发趋势免费咨询律师微信公众号
  • 简述企业网站如何推广哈尔滨网站开发电话
  • 做短连接的网站自己编写的网站如何放到wordpress
  • 企业进行网站建设的方式深圳做男装什么网站容易找工
  • 十大免费ppt模板免费下载网站在网站里文本链接怎么做
  • 做自适应网站注意事项做网站所具备的的条件
  • 湖北建设科技中心网站用什么做网站方便
  • 网站设计宽屏装饰公司网站源码下载
  • 如何做网站轮播图和菜单全屏汕头网站建设方案书