企业网站建设价格如何,建设一个专业企业网站的公司报价是多少?

摘要:网站建设论文500字,企业网站的建设公司价格,求职找工作,搭建cms网站原题链接:数组中重复的数字 一、描述: 在一个长度为 n 的数组 nums 里的所有数字都在 0&a
网站建设论文500字,企业网站的建设公司价格,求职找工作,搭建cms网站原题链接#xff1a;数组中重复的数字 一、描述#xff1a; 在一个长度为 n 的数组 nums 里的所有数字都在 0#xff5e;n-1 的范围内。数组中某些数字是重复的#xff0c;但不知道有几个数字重复了#xff0c;也不知道每个数字重复了几次。请找出数组中任意一个重复的数…原题链接数组中重复的数字 一、描述 在一个长度为 n 的数组 nums 里的所有数字都在 0n-1 的范围内。数组中某些数字是重复的但不知道有几个数字重复了也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 二、样例 输入 [2, 3, 1, 0, 2, 5, 3] 输出 2 或 3 三、数据范围 2 n 100000 四、题解 1. 利用下标索引 即通过创建额外的数组空间用来记录各个数出现的次数具体实现方法是 1创建数组并将数组元素初始化为0 2遍历原数组以出现的数作为用于计数的数组的下标该下标所对应的计数数组中的元素 3计数数组中的元素若大于1则该元素所对应的下标就是原数组中那个重复的数字。 以样例为例 设计数数组为count[100001]则遍历原数组后可得到 count[0] 1; count[1] 1; count[2] 2; count[3] 2; count[5] 1;故2或3就是原数组中重复的数 完整代码 int findRepeatNumber(int* nums, int numsSize) {int hash[100001] {0};int i 0;for(i 0; i numsSize; i){if(hash[nums[i]] 1)return nums[i];}return 0; }复杂度分析 使用了额外的空间空间复杂度O(n) 遍历整个数组时间复杂度O(n)。 2. 原地置换重点学习 顾名思义算法的主要思想就是在原数组的基础上根据不同索引值进行数据的置换然后根据置换的结果就可以判断出那个重复的数下面详细介绍。 介绍之前先总结列出文中相关句段所对应的代码段可能会便于理解一些 设循环遍量为 i 则 当前元素或者说以 i 为下标索引得到当前元素表示为nums[i] 以循环变量 i 作为直接索引得到当前元素表示为i nums[i] 以当前元素本身 作为数组下标索引得到当前元素表示为: nums[nums[i]] nums[i] 这里再规定一下 “正确的位置” 的含义以便说明 “正确的位置” 代表该元素正好就是以该元素本身为数组下标索引所得的元素。如数组arr[5] {0, 2, 1, 3, 6}其中的元素0与元素3就处于 “正确的位置” 因为arr[0] 0arr[3] 3。 1算法思想遍历数组每遇到一个元素就检查该元素是否位于正确的位置上: 先以循环变量 i 作为直接索引进行检查即if(i nums[i])若符合条件则说明此时元素恰好位于正确的位置上原来在数组中就处于正确位置或交换后处于正确位置那么就执行i跳过而检查下一个元素再以该元素本身作为下标索引进行检查即if(nums[nums[i]] nums[i])若符合条件则说明此元素在之前已经出现过出现时的位置要么恰好是正确的位置要么是经过交换来到了正确的位置因此该元素就为重复元素若都不符合两种检查方式的条件则说明元素不在正确的位置上那么需与相对当前元素来说的正确位置上的元素进行交换从而让该元素元素处于正确位置但需要注意的是交换可以让当前元素处于正确的位置上但不能保证被交换的元素处于正确的位置上所以在执行完交换后i不进行直到使两个交换的元素都处于正确的位置上后才由条件if(i nums[i])来控制i的。
阅读全文