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

wordpress主页删除/seo上排名

wordpress主页删除,seo上排名,wordpress 固定导航,wordpress 防篡改调整数组顺序使奇数位于偶数之前 题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的…

调整数组顺序使奇数位于偶数之前

题目描述:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变

 示例

示例1:

输入:[1,2,3,4]

返回值:[1,3,2,4]

示例2:

输入:[1,2,3,4,5,6,7]

输出:[1,3,5,7,2,4,6]

 思路:

  1. 不考虑时间复杂度,最简单的思路就是从头扫描数组,每碰到一个偶数,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,此时把该偶数放入这个空位。时间复杂度:O(n^2)
  2. 维护两个指针
    • 第一个指针初始化时指向数组的第一个元素,只向后移动;
    • 第二个指针指向数组的最后一个元素,指向前移动。
    • 只要第一个指针位于第二个指针之前,如果第一个指针指向的数字是偶数,第二个指针指向的数字是奇数,则交换这两个数字。
  3. 如果要保证奇数与奇数,偶数与偶数之间的相对位置不变;借鉴冒泡排序,将相邻的偶数与奇数交换

代码实现:

双指针


public class Solution {public  static int[] reOrderArray (int[] array) {//奇数在前,偶数在后/*** 使用左右指针,不能保证保持原来的顺序*/int i =0;int j = array.length-1;while (i < j){while (i < j&& array[i] %2 != 0 ){i++;}while (i < j&& array[j] %2 == 0 ){j--;}if (i < j){int temp = array[i];array[i] = array[j];array[j] = temp;}}return array;}public static void main(String[] args) {int[] array = {1,2,3,4,5,6,7};int[] results = reOrderArray(array);for (int i :results){System.out.println(i);}}
}

实际输出结果:

预期输出结果:

使用上述方法得到的结果,没有保持相对位置不变

相邻的偶数与奇数交换

public class Solution {public  static int[] reOrderArray (int[] array) {//奇数在前,偶数在后/***借鉴冒泡排序,将相邻的偶数和奇数交换*/for (int i=1;i< array.length;i++){for (int j =i-1;j>=0;j--){if ( array[j] %2 == 0 && array[j+1] %2 ==1 ){int temp = array[j];array[j] =array[j+1];array[j+1] = temp;}}}return array;}
}

扩展

扩展题目:

  1. 数组中的数按照大小分为两部分,所有辅助都在非负数的前面。
  2. 数组中的数分为两部分,能被3整除的数都在不能不能被3整除的数的前面。

针对这一系列同类型的问题:

把整个函数分解为两个部分;

一是判断数字应该在前半部分还是后半部分的标准;

二是拆分数组的操作。

代码上只需要调整分组的标准isEven函数,其他代码不需要改动。

提高了代码的重用性,更好的扩展功能。

public class Solution {public int[] reOrderArray (int[] array) {int length =array.length;if (array == null || length == 0) {return null;}int i = 0;int j = array.length-1;while (i < j){while (i < j && !isEven(array[i])){i++;}while (i < j && isEven(array[j])){j--;}if (i < j){int temp =array[i];array[i] = array[j];array[j] = temp;}}return array;}//确定分组的标准private boolean isEven(int n) {return (n & 1) == 0;}
}

 

http://www.lbrq.cn/news/1376299.html

相关文章:

  • seo网站推广杭州/做网站公司哪家比较好
  • 怎么做网站统计/创意营销策划方案
  • 做网站会遇到什么问题/提升seo排名
  • 优质做网站费用/百度小程序怎么进入
  • 网站推广网络推广/如何网络营销自己的产品
  • 做购物类网站有哪些/市场调研报告500字
  • 知乎系统是wordpress/公众号seo排名软件
  • 网站备案承诺书/seo查询在线
  • 开通网站后/中国seo排行榜
  • 牡丹江站/可免费投放广告的平台
  • php mysql网站开发.../免费推客推广平台
  • 网络营销的5种方式/邯郸seo优化公司
  • c网站开发源代码/搜索引擎优化seo网站
  • 没有空间可以做网站吗/手机百度app下载
  • 沙井商城网站建设/2021年最为成功的营销案例
  • wordpress建两个网站吗/seo兼职
  • 宁波seo链接优化/aso优化工具
  • 河源做网站优化/关键词分析
  • dede后台网站地图怎么做/seo顾问培训
  • 网站开发课程/海南网站网络推广
  • 蒙特网公司做什么的/北京网站优化服务商
  • 芜湖做网站多少钱/搜索率最高的关键词
  • php做网站都需要学什么软件/东莞网络优化哪家公司好
  • 大型网站建站/谷歌seo搜索
  • 如何在iis下建设网站/站长工具seo综合查询腾讯
  • 建网站培训学校/网络营销成功案例3篇
  • 网站开发语言哪一种好些/百度排名工具
  • 做公司网站首页/成都网络推广哪家好
  • 电子商务网站系统/百度快照是啥
  • asp.net网站项目建设/新媒体口碑营销案例
  • i Battery Box V3.7 客户端电池检测仪
  • JVM学习日记(十四)Day14——性能监控与调优(一)
  • 第15讲——微分方程
  • 新手小白如何快速检测IP 的好坏?
  • Docker状况监控
  • 用 TensorFlow 1.x 快速找出两幅图的差异 —— 完整实战与逐行解析 -Python程序图片找不同