/* * @lc app=leetcode id=922 lang=rust * * [922] Sort Array By Parity II * * https://leetcode.com/problems/sort-array-by-parity-ii/description/ * * algorithms * Easy (68.02%) * Total Accepted: 76.3K * Total Submissions: 112.1K * Testcase Example: '[4,2,5,7]' * * 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: * * * 2 <= A.length <= 20000 * A.length % 2 == 0 * 0 <= A[i] <= 1000 * * * * * */ impl Solution { pub fn sort_array_by_parity_ii(a: Vec) -> Vec { let mut res = vec![0; a.len()]; let mut i = 0; let mut j = 1; for n in a{ if n % 2 == 0 { res[i] = n; i += 2; } else { res[j] = n; j += 2; } } res } } // pub structSolution; use std::collections::HashMap; use std::collections::HashSet; use std::fmt::Debug; use std::hash::Hash; use std::iter::FromIterator; use std::collections::VecDeque; #[allow(dead_code)] pub fn print_map(map: &HashMap) { for (k, v) in map.iter() { println!("{:?}: {:?}", k, v); } } #[allow(dead_code)] pub fn say_vec(nums: Vec){ println!("{:?}", nums); } #[allow(dead_code)] pub fn char_frequency(s: String) -> HashMap { let mut res:HashMap = HashMap::new(); for c in s.chars(){ *res.entry(c).or_insert(0) += 1; } res } #[allow(dead_code)] pub fn vec_counter(arr: Vec) -> HashMap { let mut c = HashMap::new(); for n in arr { *c.entry(n).or_insert(0) += 1; } c } #[allow(dead_code)] pub fn vec_to_hashset(arr: Vec) -> HashSet { HashSet::from_iter(arr.iter().cloned()) }