leetcode刷题记录

这个月开始刷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.

  1. 解法
    没什么好说的,排序太好用了,但总觉得不是最优的方法。
/**
 * @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. 解法1
    这里就是把字符串变成数组,然后进行排序,按照顺序位置对应,顺序位置不一致的就一定是添加的那个了。

  2. 解法2
    利用string的indexOf()方法,在s里面寻找t中的每一个字符,找到后,就把s中相应字符变成“”或者其他大写,确保下一次不会再找到。然后依次找完就知道哪个不同了。

  3. 总结
    这两种方法我感觉都不是最优的,但一时还想不出来更优的解法

/**
 * @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.

  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;

};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值