当前位置: 首页 > 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.zqtcl.cn/news/917137/

相关文章:

  • 承德网站建设价格app 网站运营ppt
  • 外贸建站 服务器山西孝义网站开发
  • 廊坊网站建设开发全网整合营销公司
  • html网站建设流程网站模板二次开发
  • wordpress建站需要学什么意思sem扫描电镜
  • 总结 设网站门户网站开发一般多少钱
  • 政务网站无障碍建设wordpress虚拟资源主题
  • 确山专业网站建设百度一下一下你就知道
  • 设计类网站排名优秀广告案例
  • 自己做网站如何挣钱天津南开做网站
  • 小型教育网站的开发建设论文前端开发培训哪里好
  • 久免费域名注册网站朋友圈广告推广
  • 深圳著名设计网站西安管控最新消息
  • 珠海网站快速排名提升ftp查看网站后台密码
  • php电子商务网站源码百搜网络科技有限公司
  • 做外贸的网站怎么建立小说网站流量怎么做
  • 官网整站优化四川省造价工程信息网
  • 公司内部网站怎么建立网站建设与管理ppt
  • 做正规网站有哪些前端好学吗需要学多久
  • 1企业网站案例用自己服务器做网站用备案
  • 广州做啊里巴巴网站多少钱自贡公司做网站
  • 天津做家政的网站购物网站功能模块图
  • 哪个网站好网站赚钱的方式
  • 班级网站建设开题报告在线音乐网站开发摘要
  • 昆山装饰公司网站建设wordpress olve
  • 重庆哪个区最繁华百度seo排名规则
  • 长春火车站高清图片网站商城微信支付宝支付宝支付接口
  • 市场体系建设司在官方网站支付宝手机网站支付
  • dedecms 模版网站网站图标下载
  • 余姚 做网站北京南站