输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

示例:

输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。

提示:

0 <= nums.length <= 50000
0 <= nums[i] <= 10000

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

建立空切片,两次遍历

func exchange(nums []int) []int {
res := make([]int,0,len(nums))
for _, num := range nums {
if num % 2 == 1 {
res = append(res, num)
}
}
for _, num := range nums {
if num % 2 == 0 {
res = append(res, num)
}
}
return res
}

建立大小为N的切片,双指针一次遍历

func exchange(nums []int) []int {
n := len(nums)
res := make([]int,n)
left, right := 0, n-1
for _, num := range nums {
if num % 2 == 1 {
res[left] = num
left++
} else {
res[right] = num
right--
}
}
return res
}

双指针原地交换法

func exchange(nums []int) []int {
n := len(nums)
left, right := 0, n-1
for left < right {
//符合左奇数右偶数的情况
for left < right && nums[left]%2 == 1 { // left < right 条件避免数组越界
left++
}
for left < right && nums[right]%2 == 0 {
right--
}
// 不满足左奇数右偶数的情况
if left < right {
nums[left], nums[right] = nums[right], nums[left]
left++
right--
}
}
return nums
}

用 Go 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面的更多相关文章

  1. 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

    剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Offer 21 这题的解法其实是考察快慢指针和头尾指针. package com.walegarrett.offer; /** * @Aut ...

  2. 【Java】 剑指offer(21) 调整数组顺序使奇数位于偶数前面

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇 ...

  3. 剑指Offer:调整数组顺序使奇数位于偶数前面【21】

    剑指Offer:调整数组顺序使奇数位于偶数前面[21] 题目描述 输入一个整形数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 解题分析 使用插 ...

  4. 剑指offer:调整数组顺序使奇数位于偶数前面

    题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 分析 事实上,这个题比较简单,很多种方式都可以实现,但是其时间复杂度或空间复 ...

  5. 【剑指Offer】调整数组顺序使奇数位于偶数前面 解题报告(Python)

    [牛客网]调整数组顺序使奇数位于偶数前面 解题报告 标签(空格分隔): 牛客网 题目地址:https://www.nowcoder.com/questionTerminal/beb5aa231adc4 ...

  6. 剑指offer(07)-调整数组顺序使奇数位于偶数前面【转】

    来源:http://www.acmerblog.com/offer-6-2429/ 题目来自剑指offer系列 九度 1516 题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得 ...

  7. Go语言实现:【剑指offer】调整数组顺序使奇数位于偶数前面

    该题目来源于牛客网<剑指offer>专题. 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和 ...

  8. 剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)

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

  9. 剑指Offer 13. 调整数组顺序使奇数位于偶数前面 (数组)

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

  10. 【剑指offer】调整数组顺序使奇数位于偶数前面

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

随机推荐

  1. WPF VB.NET 代码实现界面动画效果

    WPF VB.NET 代码实现界面动画效果 Imports System.Windows.Media.Animation 例子: Dim result As New Storyboard Dim an ...

  2. leetcode 1636

    一些关于hashmap和list的用法 class Solution { public int[] frequencySort(int[] nums) { Map<Integer, Intege ...

  3. python 购物小程序

    要求:  1.启动程序后,让用户输入预算,然后打印商品列表  2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额够不够,够就直接付款,不够就提醒 4.可随时退出,推出时打印已购买商品和余额 ...

  4. jsp第8个作业

    public boolean addMail(Msg msg){ Statement st =null; Connection con=null; try{ //获取连接 con = getConne ...

  5. HashMap记录

    1.HashMap接收null的键值 2.HashMap是非synchronized的 3.HashMap使用hashCode找到bucket的位置.bucket中存储的是键和值 4.当HashCod ...

  6. test.sh 监听进程是否存在

    监听myloader进程是否结束,结束后把时间输出到 /root/time.log vim test.sh #!/bin/bash #确保PRO查询进程唯一 PRO="myloader&qu ...

  7. Vue的Component name报错

    问题描述: Component name "xxxxx" should always be multi-word.eslintvue 解决方案: 在项目目录中找到 .eslintr ...

  8. 二、Basic HTML5 知识整理

    一.需要记下的html5知识 1.html5网页文本框架 <!DOCTYPE html> <html> <head></head> <body&g ...

  9. TCP长连接管道通信改消息队列涉及到的知识点

    1.队列,链表,STL 1.C++ STL标准库简介 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出"可重复运用的东西" 的方法,从函数(functions) ...

  10. 实验六 开源控制器实践——RYU

    (一)基本要求 搭建SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑. 阅读Ryu文档的The First Application一节,运行当中的L ...