zoukankan      html  css  js  c++  java
  • [算法学习]开始leetcode之旅

    在此记录一下用javascript刷leetcode的过程,每天都要坚持!

    1.Two Sum

    Given an array of integers, find two numbers such that they add up to a specific target number.

    The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.

    Please note that your returned answers (both index1 and index2) are not zero-based.You may assume that each input would have exactly one solution.

    Input: numbers={2, 7, 11, 15}, target=9Output: index1=1, index2=2

    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
    var twoSum = function(nums, target) {
        var len = nums.length,
            need,
            map = {},
            numbers = [];
        for(var i = 0; i < len; i++){
            need = target - nums[i];
            if(need in map){
                numbers.push(map[need] + 1);
                numbers.push(i + 1);
                break;
            }else{
                map[nums[i]] = i;
            }
        }
        return numbers;
    };
    

    这道题目注意下复杂度别傻傻的用双循环...

    20.Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    /**
     * @param {string} s
     * @return {boolean}
     */
    var isValid = function(s) {
        var len = s.length,
            cur,
            stack = [],
            map = {'(':')','[':']','{':'}'};
        for(var i = 0; i < len; i++) {
            cur = s[i];
            if(map.hasOwnProperty(cur)){
                stack.push(cur);
            }else{
                if(stack.length === 0){
                    return false;
                }else{
                    stackTop = stack.pop();
                    if(map[stackTop] !== cur){
                        return false;
                    }
                }
            }
        }
        if(stack.length === 0){
            return true;
        }else{
            return false;
        }
        
    };
    

    这道题目是利用堆栈的,比较巧妙,数据结构很多记不得了,最近抽时间多翻翻。

    189.Rotate Array

    Rotate an array of n elements to the right by k steps.
    For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

    /**
     * @param {number[]} nums
     * @param {number} k
     * @return {void} Do not return anything, modify nums in-place instead.
     */
    var rotate = function(nums, k) {
        var len = nums.length;
        if(len === 0 || len === 1 || k===0){
            return;
        }
        var move = nums.splice(len - k,len);
        for(var i = move.length - 1;i >= 0;i--){
            nums.unshift(move[i]);
        }
    };
    

    这题用js写的话就是考察下数组操作方法了,注意下特殊情况即可。

  • 相关阅读:
    苹果信息推送服务(Apple Push Notification Service)使用总结
    Xcode 相关路径总结
    微信红包随机算法 OC
    Xcode真机测试could not find developer disk image解决方法
    字典转模型 重写初始化方法
    Xcode 写代码没有补全提示解决:删缓存及显示隐藏文件命令
    按位与、或、异或等运算方法
    OC语言@property @synthesize和id
    iOS开发—Quartz2D简单介绍
    iOS开发—CoreLocation定位服务
  • 原文地址:https://www.cnblogs.com/lijie33402/p/4824589.html
Copyright © 2011-2022 走看看