1.只出现一次数字(给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素)
我的解题思路:1)利用Set对象的特性,只能存储任意类型的唯一值,来筛选出重复的数据,再与保存的set对象里面的值进行比较
1 var singleNumber = function(nums) { 2 let mySet = new Set(); 3 let repeatList = []; 4 for(let i = 0; i < nums.length; i++) { 5 if (mySet.has(nums[i])) { 6 repeatList.push(nums[i]); 7 } else { 8 mySet.add(nums[i]) 9 } 10 11 } 12 //console.log("mySet",mySet); 13 //console.log("repeatList",repeatList); 14 const singleNum = Array.from(mySet).filter(item=>!repeatList.includes(item)); 15 console.log("singleNum",singleNum); 16 return singleNum; 17 }; 18 singleNumber([1,2,1,2,4,6,7,7,6]);
2)利用两层循环,找到重复的数据,再和原数组比较
1 /** 2 * @param {number[]} nums 3 * @return {number} 4 */ 5 var singleNumber = function(nums) { 6 let repeatList = []; 7 for (let i = 0; i < nums.length; i++) { 8 const outItem = nums[i]; 9 for(let j = i + 1; j < nums.length; j++){ 10 const innerItem = nums[j]; 11 if (outItem === innerItem) { 12 repeatList.push(innerItem);
} 15 } 16 } 17 console.log("repeatList", repeatList); 18 const singleNum = nums.filter(item=>!repeatList.includes(item)) 19 console.log("singleNum", singleNum); 20 return singleNum[0]; 21 }; 22 singleNumber([1,2,2,1,3])
2.给定一个数组,将数组中的元素向右移动 k
个位置,其中 k
是非负数。
思路1:根据位置k,截取数组,再重新组合
1
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) {
2 const len = nums.length
3 const index = len? len - k : len
4 const arr = nums.splice(index)
5 const dataset = arr.concat(nums)
6 dataset.forEach((item,index)=>{
7 nums[index] = item
8 })
9 };
思路2:无限轮播思想,复制一份原数组,再与原数组组合形成新数组
1
/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
var rotate = function(nums, k) { 2 const len = nums.length 3 const copyNums = [...nums,...nums] 4 const index = len ? len - k%len : len 5 const _nums = copyNums.splice(index, len) 6 for(let i = 0; i < _nums.length; i++){ 7 nums[i] = _nums[i] 8 } 9 };
持续更新中...
原文:https://www.cnblogs.com/scallop/p/14239985.html