/* * @lc app=leetcode id=1389 lang=rust * * [1389] Create Target Array in the Given Order * * https://leetcode.com/problems/create-target-array-in-the-given-order/description/ * * algorithms * Easy (82.08%) * Total Accepted: 5.5K * Total Submissions: 6.6K * Testcase Example: '[0,1,2,3,4]\n[0,1,2,2,1]' * * Given two arrays of integers nums and index. Your task is to create target * array under the following rules: * * * Initially target array is empty. * From left to right read nums[i] and index[i], insert at index index[i] the * value nums[i] in target array. * Repeat the previous step until there are no elements to read in nums and * index. * * * Return the target array. * * It is guaranteed that the insertion operations will be valid. * * * Example 1: * * * Input: nums = [0,1,2,3,4], index = [0,1,2,2,1] * Output: [0,4,1,3,2] * Explanation: * nums index target * 0 0 [0] * 1 1 [0,1] * 2 2 [0,1,2] * 3 2 [0,1,3,2] * 4 1 [0,4,1,3,2] * * * Example 2: * * * Input: nums = [1,2,3,4,0], index = [0,1,2,3,0] * Output: [0,1,2,3,4] * Explanation: * nums index target * 1 0 [1] * 2 1 [1,2] * 3 2 [1,2,3] * 4 3 [1,2,3,4] * 0 0 [0,1,2,3,4] * * * Example 3: * * * Input: nums = [1], index = [0] * Output: [1] * * * * Constraints: * * * 1 <= nums.length, index.length <= 100 * nums.length == index.length * 0 <= nums[i] <= 100 * 0 <= index[i] <= i * * */ impl Solution { pub fn create_target_array(nums: Vec, index: Vec) -> Vec { let mut res = vec![]; for i in 0..index.len() { res.insert(index[i] as usize, nums[i]); } 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; // use std::collections::BTreeMap; #[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()) } #[allow(dead_code)] pub fn int_to_char(n: i32) -> char { // Convert number 0 to a, 1 to b, ... assert!(n >= 0 && n <= 25); (n as u8 + 'a' as u8) as char }