• JavaScript编程那些事(牛客网 LeetCode)


    计算给定数组 arr 中所有元素的总和 
    本人提供常规方法

    function sum(arr) {
    var len = arr.length;
    var sum = 0;
    if(len == 0){
    sum = 0;
    }else{
    for(var i = 0;i < len;i++){
    sum += arr[i];
    }
    }
    return sum;
    }


    不知名大神提供的方法
    function
    sum(arr) { return eval(arr.join('+')); }


    移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组 
    我的常规方法:

    function remove(arr, item) {
    var len = arr.length;
    var results = [];
    if(len == 0){
    results = [];
    }else{
    for(var i = 0;i < len;i++){
    if(arr[i] != item){
    results.push(arr[i]);
    }
    }

    }
    return results;
    }

    巧用API解决

    function remove(arr,item){

       return arr.filter(function(ele){

            return ele != item;

         })

    }
    在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组 

    第一次做法是:

    function append(arr, item) {
    var temp = [];
    temp = arr;
    temp.push(item);
    return temp;
    }

    这种做法是错误的,直接赋值双方引用相等会改变原数组

    正确做法:

    var temp = arr.slice(0);

    var temp = [].concat(arr);


    也可以直接

    return arr.concat(item);

    移除数组中的最后一项,且不改变原数组

    arr.slice(0,arr.length-1);//slice(n,m)中从小标n开始到下标m的前一项(不包括下标为m的那一项)。

     278. First Bad Version(leetcode)

    var solution = function(isBadVersion) {
    15     /**
    16      * @param {integer} n Total versions
    17      * @return {integer} The first bad version
    18      */
    19     return function(n) {
    20         return findBadVersion(1, n);
    21 
    22         function findBadVersion(start, end){
    23             var index = parseInt((start + end) / 2);
    24             if(isBadVersion(index)){
    25                 if(!isBadVersion(index - 1)){
    26                     return index;
    27                 }else{
    28                     return findBadVersion(start, index - 1);
    29                 }
    30             }else{
    31                 return findBadVersion(index + 1, end);
    32             }
    33         }
    34     };
    35 };

     4. Median of Two Sorted Arrays

    There are two sorted arrays nums1 and nums2 of size m and n respectively.

    Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

    Example 1:

    nums1 = [1, 3]
    nums2 = [2]
    
    The median is 2.0
    

    Example 2:

    nums1 = [1, 2]
    nums2 = [3, 4]
    
    The median is (2 + 3)/2 = 2.5
    
    var findMedianSortedArrays = function(nums1, nums2) {
        var len1 = nums1.length;
        var len2 = nums2.length;    
        var number;
    //选择一个长的数组为nums1,短的为nums2
    if(len1 <= len2){ var tempArr = []; tempArr = nums1; nums1 = nums2; nums2 = tempArr; len1 = nums1.length; len2 = nums2.length; }
    //如果数组长度均为0
    if(len1 === 0){ console.log('数组为空');
    //如果只有短的数组长度为0,长数组根据不同情况返回number值 }
    else if(len1 !== 0 && len2 === 0){ if(len1 ===1){ number = nums1[0]; }else if(len1 === 2){ number = (nums1[0] + nums1[1]) / 2; }else if(len1 > 2){ number = medianSortedArrays(nums1); } }else{
    //数组长度都不为0
    if(nums1[0] >= nums2[len2-1]){
    //如果短数组的最大值小于长数组最小值,长数组衔接在短数组后面
    var arr = nums2.concat(nums1); number = medianSortedArrays(arr); }else if(nums1[len1-1] <= nums2[0]){
    //如果短数组的最小值大于长数组的最大值,短数组衔接在长数组后面
    var arr1 = nums1.concat(nums2); number = medianSortedArrays(arr1); }else{ var i,j; for(i = 0,j = 0;i < len1,j < len2;){ if(nums2[j] > nums1[i]){
    //将下标为j的短数组中的数插入到长数组中;寻找比其大的数,没有找到则,长数组的下标加1; i
    ++; }else{
    //找到后则在i处插入短数组的一个值,且长数组长度加1; nums1.splice(i,
    0,nums2[j]); len1++; //len2--; j++; } } number = medianSortedArrays(nums1); } } return number; }; //返回一个数组中间数的大小,奇数则返回中间下标的值,偶数则返回下标为中间两个数的值 function medianSortedArrays(arr){ var len = arr.length; var number; if(len%2 === 0){ number = (arr[len/2-1] + arr[len/2])/2; }else{ number = arr[Math.floor(len/2)]; } return number; }
  • 相关阅读:
    hibernate4.3.5,Final hibernate.cfg.xml的配置
    mysql 入门 jdbc
    设计模式之责任链
    淘宝技术这十年
    java代码---------计算器实现
    java代码---------打印正三角形
    java代码=====实现修改while()
    java------------break;
    java代码-----循环变量的
    java代码----------实现写出循环
  • 原文地址:https://www.cnblogs.com/deerfig/p/6509145.html
Copyright © 2020-2023  润新知