JAVA实现:一个数组有2n个元素,其中有n个奇数、n个偶数,数组无序,写一个算法使得奇数位置放置奇数,偶数位置放置偶数

一个数组有2n个元素,其中有n个奇数、n个偶数,数组无序,写一个算法使得奇数位置放置奇数,偶数位置放置偶数 一个数组有2n个元素,其中有n个奇数,n个偶数,数组无序,写一个算法使得奇数位置放置奇数,偶数位置放置偶数。例如int array[20]={1,2,1,2,1,1,1,2,2,2,2,1,1,2,2,2,2,2,2,2};最终结果a={1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2};问题分析:遍历一次整个数组,先判断是奇数位还是偶数为,并检查数组中的元素(奇数或... 阅读详情

 

 

public class JiAndOu {

    public static void main(String[] args) {
        JiAndOu main = new JiAndOu();
        main.doAction();
    }

    private void doAction() {
        int[] nums = {1,2,1,2,1,1,1,2,2,2,2,1,1,2,2,2,2,1,1,1};
        //int[] nums = {1,1,1,2,2,2};
        sort(nums);

        for (Integer i : nums) {
            System.out.println(i);
        }

    }

    private void sort(int[] nums) {

        int idxj = 1;
        int idxo = 0;

        for (int i = 0; i < nums.length; i++) {


            int curr = nums[i];

            if (curr % 2 == 1) {
                if (i % 2 == 1) {
                    idxj = Math.max(idxj, i + 2);
                } else {
                    while (nums[i] % 2 == 1) {
                        swap(nums, i, idxj);
                        idxj += 2;
                    }
                }
            } else {
                if (i % 2 == 0) {
                    idxo = Math.max(idxo, i + 2);
                } else {
                    while (nums[i] % 2 == 0) {
                        swap(nums, i, idxo);
                        idxo += 2;
                    }
                }
            }


        }



    }


    private void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

 

让分别有N个奇数和偶数的数组的下标位置放着相应奇偶的数——c++实现 题目:数组A,2*n个元素,n个奇数、n个偶数,设计一个算法,使得数组奇数下标位置放置的都是奇数,偶数下标位置放置的都是偶数 算法: /** *是否是偶数 */ bool IsEvent( int num ) { return (num % 2 == 0); } /** *是否是奇数 */ bool IsOdd( int num ) { return (num % 2 == 1... 阅读详情

相关推荐

左神算法 奇数下标都是奇数或者偶数下标都是偶数

设置标记量,odd,even指针,分别指向当前的奇数坐标和偶数坐标的值,那指针如何移动。这里要开动脑筋,灵活处理 把数组的最后的最后一个数,作为原动力,如果是偶数,发往even的指针,even += 2,如果是奇数,发往odd的指针,这里是交换,相当于每次数组的最后一个数都是新数。odd,even走过的路就能保证偶数下标是偶数,奇数下标是奇数 public class Main { p

qq_31617121的博客 1001

2n 长度数组,n个奇数,n个偶数,把奇数放在奇数位,偶数放在偶数位

1. 先将偶数放在前面,奇数放在后面,然后在

gonglq123的专栏 1399

Java面试题 给定一个数组,将数组里的偶数要在奇数前面,要求时间复杂度位O(n)

给定一个数组,将数组里的偶数要在奇数前面,要求时间复杂度位O(n) 例如: 输入 data = { 1 ,2 ,3 ,4,5,6,7,8,9,0,13} 输出 data={0,2,8,4,6,5,7,3,9,1,13} 备注:仔细观察输入和输出,仅仅是将前面的奇数和后面的偶数交换相对位置, 思路就是,从前往后找奇数,从后往前找偶数,将找到的第一个奇数和偶数进行位置交换,依次向中间查找,直到前面的索...

冬日温暖的博客 2196

5天拿到华为Java岗offer,持续更新中

字节跳动 面试前 头条的面试是三家里最专业的,每次面试前有专门的HR和你约时间,确定OK后再进行面试。每次都是通过视频面试,因为都是之前都是电话面或现场面,所以视频面试还是有点不自然。也有人觉得视频面试体验很赞,当然萝卜青菜各有所爱。最坑的二面的时候对方面试官的网络老是掉线,最后很冤枉的挂了(当然有一些点答得不好也是原因之一)。所以还是有点遗憾的。 一面 先自我介绍下 聊项目,逆向系统是什么意思 聊项目,逆向系统用了哪些技术 线程池的线程数怎么确定? 如果是IO操作为主怎么确定? 如果计算型操作又怎么确

m0_57286743的博客 383

Java实现奇偶数排序

1 问题描述 给定一个整数数组,请调整 数组中数的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。 2 解决方案 2.1 一头一尾指针往中间扫描法 package com.liuzhen.array_2; public class OddEvenSort { //解法1:一头一尾指针往中间扫描 public void getOddEve...

南 墙 1万+

调整数组顺序使奇数位于偶数前面(Java)

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。第一思路时间复杂度O(n^2):看到这个题,我的脑海里就浮现了一个时间复杂度为O(n^2)的算法。即从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾就有一个空位,这时把该偶数放入这个空位,但是要在此位置(刚刚被移...

Sweet Baby,甜宝 1992

算法题 奇数位放奇数偶数位放偶数

今天面试遇到这样一道题,一个长度为2n的整数数组,里边有n个奇数n个偶数但是无需,要求奇数位放奇数偶数位放偶数 结题思路: 采用双指针分别记录奇数位和偶数位,当偶数位的值错误的时候如果奇数错误的index不为空则交换数值,如果为空则将index记录下来。奇数同理 public static void main(String[] args) { sort(new int[]{1, 1, 1, 1, 2, 2, 2, 2}); } public static void sort(int[] nu..

快乐冰茶 1133

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

2301_81256766的博客 1257

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

1、剑指Offer面试题21:调整数组顺序使奇数位于偶数前面 题目一:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 思路:使用双指针,left和right;left从前往后移动,直到遇到偶数; right指针向前移动,直到遇到一个奇数;交换两个指针所指向的元素。 package 数组类型; import java...

王文强的博客 467

Modelsim安装教程以及管理员身份运行patch_dll.bat时找不到文件mgls.dll的解决

Modesim安装教程 Modesim版本有很多,但是安装方式大都相同,我们以modesim.10.5为例,电脑使用的是win10 64位,讲一下安装过程中的步骤以及出现问题的解决方法 一 安装 1.首先解压安装包,在解压的安装包内选择应用程序,右键选择管理员运行。 2.稍等一会,有的电脑会弹出是否允许modesim进行更改,选择 是 即可,然后出现下面的界面,点击下一步。 3.弹出此界面选择安装路径,选择安装路径,我是在D盘新建的文件夹,直接把文件夹中的路径复制在框内。文件夹名称切记不要带中文 4.

weixin_48564372的博客 1万+

从DeepMimic到虚拟偶像:用动作捕捉数据训练AI跳舞的完整流程(附Blender插件配置)

本文详细介绍了如何利用DeepMimic的深度强化学习框架,将动作捕捉数据转化为虚拟偶像或游戏角色的舞蹈动作。从核心的模仿学习理念、PyBullet环境搭建、策略网络与奖励函数设计,到数据处理、训练技巧(如参考状态初始化),最后讲解了如何将训练好的AI模型集成到Blender和Unity等工具中,实现从数据到实时驱动角色的完整流程。

weixin_29054399的博客 502

【leetcode刷题】41.调整数组顺序使奇数位于偶数前面——Java版

早期刷题第一天

公号:一条coding 1万+

Vmware虚拟机克隆详解:固定ip + 修改uuid等内容

分两大步 设置固定ip 克隆后修改相关配置 本文引用的其他地方的图片。会附上链接 若侵权,删 一、设置静态ip 先进行虚拟网络的编辑 接下来的操作需要管理员权限。(给权限就完事了) 接下来设置网卡: 网络和共享中心→ 更改适配器设置→VMware Network Adapter VMnet8 -> 右键属性 修改TCP/Ipv4的配置,网上常见是这种,笔者是英文的...

Unknownfuture的博客 9070

java:将一维数组中奇数左边偶数右边

算法思想 1. 比较第一个数,如果是奇数则判断第二个数,如果第二个数是偶数,则判断倒数第一个数是偶数则,判断倒数第二个数是奇数,则完成交换,并将下次判断的值缩小.算法效率为n. package com.itheima.kuihuabaodian; import java.util.Scanner; public class Case01 { public static void m...

ellenm9的博客 934

利用gprMax与Matlab实现SFCW雷达信号的高效仿真与优化

本文详细介绍了如何结合gprMax与Matlab实现SFCW雷达信号的高效仿真与优化。通过利用gprMax获取地下场景的冲激响应,并在Matlab中运用卷积与信号处理技术,可大幅提升SFCW雷达系统仿真的效率与灵活性,为探地雷达研究与设计提供强大工具。

book8的博客 705

逆向工程师必备:用MDL绕过游戏保护读取内存数据的完整流程(附POC代码)

本文深入探讨了内核级内存访问技术,重点介绍了如何利用MDL(Memory Descriptor List)机制稳定、隐蔽地绕过游戏反作弊系统读取进程内存。通过对比MmCopyVirtualMemory等方法的优劣,提供了完整的MDL映射实战代码与反检测策略,为逆向工程师在内核态进行安全内存操作提供了专业指导。

weixin_29227425的博客 623

java数组分离奇数和偶数_以最小的时间复杂度分离偶数和奇数

java数组分离奇数和偶数Problem statement: 问题陈述: Given an array of integers. Write a function to segregate the Even and Odd numbers. Put the even numbers first. 给定一个整数数组。 编写一个函数来分隔偶数和奇数 。 将偶数放在第一位。 Solution:...

cumtb2009的博客 1257

【AI Agent】Hermes Agent解析

Hermes Agent:一个具备持久化学习能力的开源AI Agent框架 核心特点: 突破传统Agent的"无状态困境",通过记忆系统(SQLite+FTS5全文检索)实现跨会话经验积累 支持200+模型自由切换,11种模型家族和15+平台接入 五层架构设计(入口层、编排层、推理层、工具执行层、存储层)实现平台无关性 47+内置工具和动态技能沉淀机制,支持从任务执行中自动提炼可复用Skill 独特的四层记忆体系(会话/每日/长期/向量索引)和辩证式用户建模 与传统Agent对比: 具备自我进化能力,通过A

sysu_lluozh 922

21. 调整数组顺序使奇数位于偶数前面(剑指 Offer 题解Java版,面试常考)

21. 调整数组顺序使奇数位于偶数前面 题目描述 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 解题思路 方法一: 创建一个新数组,时间复杂度 O(N),空间复杂度 O(N)。 package 剑指offer.调整数组顺序使奇数位于偶数前面_21;/* 作者 :XiangLin 创建时间 :13/06/2020 14:17 文件 :OrderArray.java IDE :IntelliJ IDEA */ import java.util.Arrays;

youif的博客 3469

【RH850/U2A】:功能安全

功能安全相关

3130

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

降序奇数和升序偶数

输入2N个不间断无序自然数,例如,5,3,6,1,4,2,在一行输出降序奇书和升序偶数,例如,5,3,1,2,4,6。 要求: 1、使用接口机制或抽象类。 2、声明保存2N个自然数、N个奇数和N个偶数的整形数组以及N,作为接口实现类或抽象类的子类的成员变量。 3、系统地生成getters和setters以及构造函数。 4、必须有输入数组、输出数组、数组排序、数组逆序以及从2N个数中分离出奇数和偶数等成员方法或抽象方法。 在这里插入代码片 ...

An_xx的博客 1264

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

牛客题解 | 调整数组顺序使奇数位于偶数前面(一)

牛客题库题解

wc529065的博客 646

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

找出数组中出现奇数次的元素(1个或2个)

1.题目:给定一个含有n个元素的整型数组arr,其中只有一个元素出现奇数次,其余的都出现偶数次,找出这个元素。思路:我们基本上都知道计算机的位运算,其中有一个异或运算:对于任意一个数k,k^k=0,k^0=k,所以我们只需要将arr中所有的元素进行异或,那么个数为偶数的元素异或后都变成了0,只留下那个个数为奇数的那个元素。 #include &lt;stdio.h&gt; void Find(...

ityanger的技术栈 4217

c语言 一个数组奇数左边 偶数右边,有多个正整数存放在数组中,编写一个函数要求偶数在左边由小到大顺序放置,奇数在右边,也是由小到大顺序放置,Java实现...

思路:* 1.首先分左右* 2.分好再排序(左边和右边都单独排序)第一步:分左右可得注意了:大体思路最先是从两头出发分成4种情况讨论(左or右,奇数or偶数)循环处理,出口是双层的嵌套循环(外面的循环条件可能已经失效)所以以后凡是遇到嵌套循环一定要记得注意一下是否需要在内层加上外层判断条件(记不住可以自己慢慢debug)public class page02 {public static ...

weixin_39631316的博客 1003

数组3:调整数组顺序使奇数位于偶数前面

数组3:调整数组顺序使奇数位于偶数前面

小菜鸟也想飞的博客 442

整数数组中所有偶数放到所有奇数之前(C语言实现)

设计一个算法,将整数数组S[1…n]中所有偶数都放到奇数之前,要求算法时间复杂性为O(n)。 算法思想:利用快排交换 C语言代码 #include<stdio.h> /*算法思想:1.从表头开始从前向后遍历,寻找奇数元素S[i] 2.从表尾开始从后向前遍历,寻找偶数元素S[j] 3.交换二者 4.重复上述过程,直至i>j */ int* Sort_1(int *S, int n) { int i = 0;//i表示左端元素的下标 int j = n - 1;//j表示右

Sep21m_wyy的博客 3693
上一篇: 删除K个数字,使剩下的数字串最大
下一篇: 源码分析 RocketMQ DLedger 多副本即主从切换实现原理
还不够
博客等级 码龄16年 113粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值