Sort Array By Parity II LT922

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.

Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.

You may return any answer array that satisfies this condition.

Example 1:

Input: [4,2,5,7]
Output: [4,5,2,7]
Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

Note:

  1. 2 <= A.length <= 20000
  2. A.length % 2 == 0
  3. 0 <= A[i] <= 1000

Idea 1. Similar to Sort Array By Parity LT905, assume the array is in the order, what to do with next element?

Time complexity: O(n)

Space complexity: O(1)

 1 class Solution {
 2     private void swap(int[] A, int i, int j) {
 3         int temp = A[i];
 4         A[i] = A[j];
 5         A[j] = temp;
 6     }
 7     public int[] sortArrayByParityII(int[] A) {
 8         for(int even = 0, odd = 1; even< A.length; even += 2) {
 9             if(A[even]%2 == 1) {
10                 while(odd < A.length && A[odd]%2 == 1) {
11                     odd += 2;
12                 }
13                 swap(A, even, odd);
14             }
15         }
16
17         return A;
18     }
19 }
 1 class Solution {
 2     private void swap(int[] A, int i, int j) {
 3         int temp = A[i];
 4         A[i] = A[j];
 5         A[j] = temp;
 6     }
 7     public int[] sortArrayByParityII(int[] A) {
 8         for(int even = 0, odd = 1; even < A.length; even +=2) {
 9            if((A[even]&1) == 1) {
10                while((A[odd]&1) == 1) {
11                    odd += 2;
12                }
13                swap(A, even, odd);
14            }
15         }
16
17         return A;
18     }
19 }

Idea 1.a two pointers walking towards each other

 1 class Solution {
 2     private void swap(int[] A, int i, int j) {
 3         int temp = A[i];
 4         A[i] = A[j];
 5         A[j] = temp;
 6     }
 7     public int[] sortArrayByParityII(int[] A) {
 8         for(int even = 0, odd = 1; odd < A.length && even < A.length;) {
 9             if(A[even]%2 == 1&& A[odd]%2 == 0) {
10                 swap(A, even, odd);
11             }
12             if(A[even]%2 == 0) {
13                 even +=2;
14             }
15             if(A[odd]%2 == 1) {
16                 odd += 2;
17             }
18         }
19
20         return A;
21     }
22 }

use a&1 == 1 instead of a%2 == 1 to check parity

 1 class Solution {
 2     private void swap(int[] A, int i, int j) {
 3         int temp = A[i];
 4         A[i] = A[j];
 5         A[j] = temp;
 6     }
 7     public int[] sortArrayByParityII(int[] A) {
 8         for(int even = 0, odd = 1; odd < A.length && even < A.length; ) {
 9             if((A[even]&1) == 1 && (A[odd]&1) == 0) {
10                 swap(A, even, odd);
11             }
12             if((A[even]&1) == 0) {
13                 even += 2;
14             }
15             if((A[odd]&1) == 1) {
16                 odd += 2;
17             }
18         }
19
20         return A;
21     }
22 }

原文地址:https://www.cnblogs.com/taste-it-own-it-love-it/p/10673114.html

时间: 2024-10-07 23:29:14

Sort Array By Parity II LT922的相关文章

【LEETCODE】42、922. Sort Array By Parity II

package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * @ClassName: SortArrayByParityII * @Author: xiaof * @Description: 922. Sort Array By Parity II * Given an array A of non-negative integers, half of the

922. Sort Array By Parity II

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even. Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even. You may return any answer array that satisfi

LeetCode 922 Sort Array By Parity II 解题报告

题目要求 Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even. Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even. You may return any answer array that sa

leetcode922 Sort Array By Parity II

1 """ 2 Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even. 3 Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even. 4 You may return any ans

LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)

题目标签:Sort 利用两个指针,在偶数位置上找到第一个奇数:在奇数位置上找到第一个偶数,然后互相转换数字. 具体看code. Java Solution: Runtime:  2ms, faster than 99.61% Memory Usage: 42.9MB, less than 29.63% 完成日期:03/06/2020 关键点:two pointers class Solution { public int[] sortArrayByParityII(int[] A) { int

[leetcode][easy][Array][905][Sort Array By Parity]

Sort Array By Parity 题目链接 题目描述 给定一个非负整型数组A,返回一个数组,数组中靠前的位置是A中的偶数,靠后的位置是A中的奇数.偶数范围内顺序不限,奇数也是. 约定 1 <= A.length <= 5000 0 <= A[i] <= 5000 示例 Input: [3,1,2,4] Output: [2,4,3,1] The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepte

LeetCode 905. Sort Array By Parity

905. Sort Array By Parity Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A. You may return any answer array that satisfies this condition. Example 1: Input: [3,

905. Sort Array By Parity

题目来源: https://leetcode.com/problems/sort-array-by-parity/ 自我感觉难度/真实难度: easy/easy 题意: 把列表里的偶数放在前面,奇数放在后面 分析: 自己的代码: class Solution(object): def sortArrayByParity(self, A): """ :type A: List[int] :rtype: List[int] """ c=[] b=[]

【LEETCODE】41、905. Sort Array By Parity

package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * @ClassName: SortArrayByParity * @Author: xiaof * @Description: 905. Sort Array By Parity * Given an array A of non-negative integers, return an array