做推廣優(yōu)化的網(wǎng)站有哪些寧波最好的推廣平臺
說在前面
🎈不知道大家對于算法的學(xué)習(xí)是一個(gè)怎樣的心態(tài)呢?為了面試還是因?yàn)榕d趣?不管是出于什么原因,算法學(xué)習(xí)需要持續(xù)保持。
題目描述
給你一個(gè)長度為?偶數(shù) 的整數(shù)數(shù)組?nums
?。你需要將這個(gè)數(shù)組分割成?nums1
?和?nums2
?兩部分,要求:
nums1.length == nums2.length == nums.length / 2
?。nums1
?應(yīng)包含?互不相同 ****的元素。nums2
也應(yīng)包含 互不相同?的元素。
如果能夠分割數(shù)組就返回?true
?,否則返回?false
?。
示例 1:
輸入: nums = [1,1,2,2,3,4]
輸出: true
解釋: 分割 nums 的可行方案之一是 nums1 = [1,2,3] 和 nums2 = [1,2,4] 。
示例 2:
輸入: nums = [1,1,1,1]
輸出: false
解釋: 分割 nums 的唯一可行方案是 nums1 = [1,1] 和 nums2 = [1,1] 。但 nums1 和 nums2 都不是由互不相同的元素構(gòu)成。因此,返回 false 。
提示:
1 <= nums.length <= 100
nums.length % 2 == 0
1 <= nums[i] <= 100
解題思路
題目的意思是要我們將原數(shù)組分成兩個(gè)新的數(shù)組,并且兩個(gè)新的數(shù)組的長度相等,切各數(shù)組中的元素不能有相同的,這也就是說原數(shù)組的不能有重復(fù)個(gè)數(shù)大于2個(gè)以上的元素,否則我們便無法分割成滿足要求的兩個(gè)新數(shù)組了,所以我們直接遍歷原數(shù)組,計(jì)算原數(shù)組中每一個(gè)元素出現(xiàn)的次數(shù),如果元素出現(xiàn)次數(shù)大于2的話則返回false,具體代碼如下:
AC代碼
/*** @param {number[]} nums* @return {boolean}*/
var isPossibleToSplit = function (nums) {const map = {};for (const num of nums) {map[num] = (map[num] || 0) + 1;if (map[num] > 2) return false;}return true;
};
公眾號
關(guān)注公眾號『前端也能這么有趣
』,獲取更多有趣內(nèi)容。
說在后面
🎉 這里是 JYeontu,現(xiàn)在是一名前端工程師,有空會刷刷算法題,平時(shí)喜歡打羽毛球 🏸 ,平時(shí)也喜歡寫些東西,既為自己記錄 📋,也希望可以對大家有那么一丟丟的幫助,寫的不好望多多諒解 🙇,寫錯(cuò)的地方望指出,定會認(rèn)真改進(jìn) 😊,偶爾也會在自己的公眾號『
前端也能這么有趣
』發(fā)一些比較有趣的文章,有興趣的也可以關(guān)注下。在此謝謝大家的支持,我們下文再見 🙌。