摘要:請(qǐng)你構(gòu)建一個(gè)同樣長度的數(shù)組,其中,對(duì)于每個(gè),都滿足。返回構(gòu)建好的數(shù)組。從開始的排列是一個(gè)由到和也包含在內(nèi)的不同整數(shù)組成的數(shù)組。
非常感謝你閱讀本文,歡迎【?點(diǎn)贊】【?收藏】【?評(píng)論】~
放棄不難,但堅(jiān)持一定很酷!希望我們大家都能每天進(jìn)步一點(diǎn)點(diǎn)!?
本文由 二當(dāng)家的白帽子 https://le-yi.blog.csdn.net/ 博客原創(chuàng),轉(zhuǎn)載請(qǐng)注明來源,謝謝~
給你一個(gè) 從 0 開始的排列 nums(下標(biāo)也從 0 開始)。請(qǐng)你構(gòu)建一個(gè) 同樣長度 的數(shù)組 ans ,其中,對(duì)于每個(gè) i(0 <= i < nums.length),都滿足 ans[i] = nums[nums[i]] 。返回構(gòu)建好的數(shù)組 ans 。
從 0 開始的排列 nums 是一個(gè)由 0 到 nums.length - 1(0 和 nums.length - 1 也包含在內(nèi))的不同整數(shù)組成的數(shù)組。
輸入: nums = [0,2,1,5,3,4]輸出: [0,1,2,4,5,3]解釋: 數(shù)組 ans 構(gòu)建如下: ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]] = [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]] = [0,1,2,4,5,3]
輸入: nums = [5,0,1,2,3,4]輸出: [4,5,0,1,2,3]解釋: 數(shù)組 ans 構(gòu)建如下: ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]] = [nums[5], nums[0], nums[1], nums[2], nums[3], nums[4]] = [4,5,0,1,2,3]
題目描述既是答案,直接新建一個(gè)同樣大小的數(shù)組,遍歷一遍,按順序賦值即可。
但是這樣需要占更多內(nèi)容空間,而且單純這樣做,根本算不上算法吧?
怎樣能做到不占用新的內(nèi)存空間呢?提示中,每個(gè)數(shù)的范圍都在[0,999]之間,這是個(gè)關(guān)鍵。
按照題意的直接處理法
class Solution { public int[] buildArray(int[] nums) { final int n = nums.length; int[] ans = new int[n]; for (int i = 0; i < n; ++i) { ans[i] = nums[nums[i]]; } return ans; }}
不開辟新的空間,直接在原數(shù)組處理
class Solution { public int[] buildArray(int[] nums) { final int n = nums.length; final int highValue = 1000; // 將結(jié)果值附加到數(shù)組 for (int i = 0; i < n; ++i) { // 將原值+結(jié)果 // 一個(gè)值同時(shí)存儲(chǔ)了原值和結(jié)果值 nums[i] += highValue * (nums[nums[i]] % highValue); } // 將原值剔除,僅保留結(jié)果 for (int i = 0; i < n; ++i) { nums[i] /= highValue; } return nums; }}
/** * Note: The returned array must be malloced, assume caller calls free(). */int* buildArray(int* nums, int numsSize, int* returnSize){ const int highValue = 1000; for (int i = 0; i < numsSize; ++i) { nums[i] += highValue * (nums[nums[i]] % highValue); } for (int i = 0; i < numsSize; ++i) { nums[i] /= highValue; } *returnSize = numsSize; return nums;}
class Solution {public: vector<int> buildArray(vector<int>& nums) { const int highValue = 1000; int n = nums.size(); for (int i = 0; i < n; ++i) { nums[i] += highValue * (nums[nums[i]] % highValue); } for (int i = 0; i < n; ++i) { nums[i] /= highValue; } return nums; }};
from typing import Listclass Solution: def buildArray(self, nums: List[int]) -> List[int]: highValue = 1000 n = len(nums) for i in range(n): nums[i] += highValue * (nums[nums[i]] % highValue) for i in range(n): nums[i] //= highValue return nums
func buildArray(nums []int) []int { highValue := 1000 n := len(nums) for i := 0; i < n; i++ { nums[i] += highValue * (nums[nums[i]] % highValue) } for i := 0; i < n; i++ { nums[i] /= highValue } return nums;}
impl Solution { pub fn build_array(nums: Vec) -> Vec { let mut nums = nums; let high_value = 1000; let n = nums.len(); for i in 0..n { nums[i] += high_value * (nums[nums[i] as usize] % high_value); } for i in 0..n { nums[i] /= high_value; } return nums; }}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119815.html
摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...
摘要:數(shù)組定義為下標(biāo)從開始且。請(qǐng)返回中所有元素按位異或后得到的結(jié)果。樣例輸入輸出解釋數(shù)組為,其中。為按位異或運(yùn)算符。也就是只有是奇數(shù)并且是奇數(shù)的時(shí)候,最終結(jié)果的最低位才會(huì)是。 ...
閱讀 2841·2021-11-24 09:39
閱讀 3414·2021-11-19 09:40
閱讀 2277·2021-11-17 09:33
閱讀 3772·2021-10-08 10:04
閱讀 3063·2021-09-26 09:55
閱讀 1690·2021-09-22 15:26
閱讀 951·2021-09-10 10:51
閱讀 3152·2019-08-30 15:44