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

开发 网站 费用广告页面制作

开发 网站 费用,广告页面制作,重庆帝一网络网站建设专家,哪个做问卷网站佣金高题目描述 给定一个数组#xff0c;将数组中的元素向右移动 k 个位置#xff0c;其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4]示…题目描述 给定一个数组将数组中的元素向右移动 k 个位置其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4]示例 2: 输入: [-1,-100,3,99] 和 k 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,-100,3] 向右旋转 2 步: [3,99,-1,-100]说明: 尽可能想出更多的解决方案至少有三种不同的方法可以解决这个问题。要求使用空间复杂度为 O(1) 的原地算法。 我的思路 一次到位移动k个位置一次移动一个位置循环k次 两种思路乘以移动方向左移、右移共四种结题思路。 举例一次到位右移k次PS空间复杂度不符合要求… public void rotate(int[] nums, int k) {if(nums null || nums.length1 || k%nums.length0) {return;}kk%nums.length;int curValnums[0],nextVal0,curIdx0,nextIdx0,count0;SetInteger set new HashSetInteger();set.add(0);while(countnums.length) {nextIdx (curIdxk)%nums.length;nextVal nums[nextIdx];nums[nextIdx] curVal;if(set.contains(nextIdx)) {//防止出现n%k0时的死循环现象for(int i1;inums.length;i) {if(!set.contains(i)) {curVal nums[i];curIdx i;set.add(curIdx);break;}}}else {curVal nextVal;curIdx nextIdx;set.add(curIdx);}}}思路2 一次移动一个位置循环k次 这个思路实现起来最简单但是相应的时间复杂度也较高O(k*n) /*** 双重循环* 时间复杂度O(k*n)* 空间复杂度O(1)*/ public void rotate(int[] nums, int k) {if(nums null || nums.length1 || k%nums.length0) {return;}kk%nums.length;int len nums.length;int temp0;for(int i0;ik;i) {temp nums[len-1];for(int jlen-1;j0;j--) {nums[j] nums[j-1];}nums[0] temp;}}拓展后 思路3翻转数组 /*** 翻转* 时间复杂度O(n)* 空间复杂度O(1)*/ public void rotate(int[] nums, int k) {if(nums null || nums.length1 || k%nums.length0) {return;}int n nums.length;k % n;reverse(nums, 0, nums.length-1);reverse(nums, 0, k-1);reverse(nums, k, nums.length-1);}private void reverse(int[]nums, int start, int end) {int temp0;while(startend) {tempnums[start];nums[start]nums[end];nums[end--]temp;}}网上大神的代码摘录如下 /*** 双重循环* 时间复杂度O(kn)* 空间复杂度O(1)*/public void rotate_1(int[] nums, int k) {int n nums.length;k % n;for (int i 0; i k; i) {int temp nums[n - 1];for (int j n - 1; j 0; j--) {nums[j] nums[j - 1];}nums[0] temp;}}/*** 翻转* 时间复杂度O(n)* 空间复杂度O(1)*/public void rotate_2(int[] nums, int k) {int n nums.length;k % n;reverse(nums, 0, n - 1);reverse(nums, 0, k - 1);reverse(nums, k, n - 1);}private void reverse(int[] nums, int start, int end) {while (start end) {int temp nums[start];nums[start] nums[end];nums[end--] temp;}}/*** 循环交换* 时间复杂度O(n^2/k)* 空间复杂度O(1)*/public void rotate_3(int[] nums, int k) {int n nums.length;k % n;// 第一次交换完毕后前 k 位数字位置正确后 n-k 位数字中最后 k 位数字顺序错误继续交换for (int start 0; start nums.length k ! 0; n - k, start k, k % n) {for (int i 0; i k; i) {swap(nums, start i, nums.length - k i);}}}/*** 递归交换* 时间复杂度O(n^2/k)* 空间复杂度O(1)*/public void rotate(int[] nums, int k) {// 原理同上recursiveSwap(nums, k, 0, nums.length);}private void recursiveSwap(int[] nums, int k, int start, int length) {k % length;if (k ! 0) {for (int i 0; i k; i) {swap(nums, start i, nums.length - k i);}recursiveSwap(nums, k, start k, length - k);}}private void swap(int[] nums, int i, int j) {int temp nums[i];nums[i] nums[j];nums[j] temp;}
http://www.pierceye.com/news/838286/

相关文章:

  • 国内wordpress有名的网站河南住房和城乡建设厅网站资质
  • 湛江seo建站wordpress5.1更新
  • 泊头公司做网站做网站价格差异很大
  • 网站开发啊wordpress 图片本地化
  • 尚品中国多年专注于高端网站建设免费加盟无需店面
  • 游标卡尺 东莞网站建设wordpress 域名解析
  • 站长工具视频怎么开免费网站
  • 网站地址怎么申请注册最近新闻大事
  • interidea 做网站网站域名备案 更改
  • 哈尔滨公司做网站动画设计的大学排名
  • 网站建设与网页制作试卷网站搜索引擎优化推广
  • 网站子目录设计网站开发数据库技术
  • 可以做音基题的音乐网站上海网站设计公司有哪些
  • 昆明做网站公司做家居的网站
  • 网站建设首选易网宣软文代发
  • 手机版网站开发用什么语言自己建设的网站怎么赚钱
  • 宁波建设监理协会网站软件开发文档的作用
  • 兰州电商平台网站建设网路神做网站怎么样
  • 诸城易讯网站建设服务中心网址的域名
  • 制作商务网站应用公园制作app软件下载
  • 情头定制网站被称为网站开发神器
  • 宝安网站设计案例淘宝页面制作
  • 天津品牌网站制作怎样建设网站流程
  • 怎样进行公司网站建设wordpress主题公司
  • 外宣做网站宣传网站功能描述
  • 部队网站建设多少钱营销自己的网站
  • 长春市城乡建设部网站南昌诚推网络技术有限公司
  • 网站 建设 欢迎你濮阳家电网站建设
  • 怎么快速建立一个网站如何用腾讯云服务器搭建wordpress
  • 五屏网站建设多少钱深圳网站公司有哪些