當前位置:網站首頁>【Leetcode】442. 數組中重複的數據
【Leetcode】442. 數組中重複的數據
2022-05-14 04:50:30【promise_yaner】
題目鏈接:數組中重複的數據
題目描述:
給你一個長度為 n 的整數數組 nums ,其中 nums 的所有整數都在範圍 [1, n] 內,且每個整數出現 一次 或 兩次 。請你找出所有出現 兩次 的整數,並以數組形式返回。
你必須設計並實現一個時間複雜度為 O(n) 且僅使用常量額外空間的算法解决此問題。
分析:
1)題目要求的時間複雜度為O(n),空間複雜度為O(1)。說明需要使用哈希錶,但不能借助另外的哈希錶。
2)又因為數組長度為n,索引是[0,n-1],數據範圍是[1,n],所以可以使用原地哈希的方式。即原地修改數組nums為哈希錶。
具體方法有:
方法一:將nums[i]%n作為新的索引j,j的範圍為[0,n-1],若nums[j]<n,說明nums[i]%n是第一次出現,將nums[j]+=n。那麼之後若nums[j]>n,說明nums[i]%n是第二次出現。
方法二:將|nums[i]|-1作為新的索引j,(|nums[i]|錶示取絕對值),j的範圍為[0,n-1],若nums[j]>0,說明|nums[i]|-1是第一次出現,將nums[j]取反。那麼之後若nums[j]<0,說明|nums[i]|-1就是第二次出現。
代碼如下:
var findDuplicates = function(nums) {
const n=nums.length;
let res=[]
for(let i=0;i<n;i++){
if(nums[nums[i]%n]>n)
res.push(nums[i]%n==0?n:nums[i]%n);
nums[nums[i]%n]+=n;
}
return res;
};
var findDuplicates = function(nums) {
const n=nums.length;
let res=[]
for(let i=0;i<n;i++){
let x=Math.abs(nums[i]);
if(nums[x-1]<0)
res.push(x);
else
nums[x-1]=-nums[x-1];
}
return res;
};
版權聲明
本文為[promise_yaner]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/134/202205140427492341.html
邊欄推薦
猜你喜歡
隨機推薦
- 【服務器數據恢複】硬盤壞道和不穩定扇區導致服務器崩潰的數據恢複案例
- 性能測試報告編寫技巧
- ASP.NET對Cookie的操作方法有哪些
- SAP UI5 應用開發教程之八十七 - 如何讓 SAP UI5 Mock 服務器支持自定義 url 參數試讀版
- Redis基礎之溫故
- 神經網絡中的反向傳播&&參數更新
- 深度學習基礎知識點(一)CNN卷積神經網絡——1.卷積方面的原理
- 從PlatEMO中提取真實PF前沿
- G020-OP-INS-RHEL-02 RedHat OpenStack 發放雲主機(命令行)
- 解决報錯: AttributeError: module ‘distutils‘ has no attribute ‘version‘,親測有效
- 一文了解字節跳動如何解决 SLA 治理難題
- openstack底層提取所有虛擬機IP和其uuid、openstack底層提取所有虛擬機的所在宿主機
- 安裝mysql-community-server報錯缺少libaio依賴
- gin框架疑問, 為什麼不使用 *RouterGroup
- Redis分頁
- 【數據庫系統工程師】6.4數據倉庫和數據挖掘基礎知識
- PyTorch分類識別例子
- npx hardhat verify YOUR_CONTRACT_ADDRESS --network rinkeby
- 番外篇-穀粒商城的數據庫錶結構設計SQL語句
- 19. 删除鏈錶的倒數第 N 個結點
- c# 獲取枚舉描述的擴展方法
- 應如何認定解除合同通知的效力?
- 遊戲行業實戰案例5:玩家在線分布
- 【LeetCode】Day59-醜數 & 不同的二叉搜索樹
- CTFSHOW MISC入門
- 【國產免費】分布式作業批量處理平臺TASKCTL驗證的不同方式
- 數學建模學習(66):支持向量機 (SVM)案例實戰
- Thanos Sidecar組件
- Meta AI 宣布對人腦和語言處理進行長期研究
- 檢討書範文生成微信小程序工具源碼-支持流量主
- 元組類型(C# 參考)
- PTC:元宇宙引發醫療設備研發重大變革
- 面試題 01.05. 一次編輯 / 劍指 Offer II 041. 滑動窗口的平均值
- 華為機試第十一題:HJ11 數字顛倒
- Pascal VOC2012數據集
- unzip命令
- flink(scala版)學習一之常用的source
- [電路]7-實際電源模型和等效變換
- Go語言type自定義類型哦
- Pytorch和GPU有關操作(CUDA)