这个月开始刷leetcode,很认真的写,完了还纪录note,今天才发现原来写过的题目是不会保存的啊!所以想在这里记录一下,也算一种监督学习和进步吧~
217. Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
- 解法
没什么好说的,排序太好用了,但总觉得不是最优的方法。
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
nums=nums.sort();
for(var i=0;i<nums.length-1;i++){
if(nums[i]==nums[i+1])return true;
}
return false;
};
389Find the Difference
https://leetcode.com/problems/find-the-difference/
Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
解法1
这里就是把字符串变成数组,然后进行排序,按照顺序位置对应,顺序位置不一致的就一定是添加的那个了。解法2
利用string的indexOf()方法,在s里面寻找t中的每一个字符,找到后,就把s中相应字符变成“”或者其他大写,确保下一次不会再找到。然后依次找完就知道哪个不同了。总结
这两种方法我感觉都不是最优的,但一时还想不出来更优的解法
/**
* @param {string} s
* @param {string} t
* @return {character}
*/
var findTheDifference = function(s, t) {
s=(s.split("")).sort();
t=(t.split("")).sort();
for(var i=0;i<s.length;i++){
if(s[i]!=t[i])return t[i];
//else return t[i];
}
return t[t.length-1];
};
453. Minimum Moves to Equal Array Elements
Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.
- 解法
每次n-1个+1,就相当于1个-1.唯一麻烦的就是要找到最小值。
/**
* @param {number[]} nums
* @return {number}
*/
var minMoves = function(nums) {
var minist=Math.min.apply(Math,nums);
var result=0;
for(var i=0;i<nums.length;i++){
result+=nums[i]-minist;
}
return result;
};