前端算法呀

20211008_PromiseRace

var myPromiseRace = function (args) {
      return new Promise((resolve, reject) => {
        for (let i in args) {
          Promise.resolve(args[i])//转化成promise
            .then((res) => { resolve(res) })
            .catch((res) => { reject(res) })
        }
      })
    }

20210930_PromiseAll

var myPromiseAll = function (args) {
      let res = [];
      return new Promise((resolve, reject) => {
        for (let i in args) {
          Promise.resolve(args[i])//转化成promise
          .then(
            (data) => {
              res[i] = data
              if (i == args.length - 1) {
                resolve(res)
              }
            }
          ).catch((e) => {
            reject(e)
          })
        }
      })
    }

20210928_leetcode的打家劫舍

/**
 * @param {number[]} nums
 * @return {number}
 */
 var rob = function(nums) {
   var length = nums.length;
   if(length==0)
   return 0
   var dp = [];
   dp[0]=0;
   dp[1]=nums[0];
   for (let index = 2; index <= length; index++) {
     dp[index] = dp[index-1]>dp[index-2]+nums[index-1]?dp[index-1]:dp[index-2]+nums[index-1]
   }
   return dp[length]
};

20210924_leetcode的除自身以外的乘积

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var productExceptSelf = function (nums) {
  let list =[]
  let k=1
  for (let index = 0; index < nums.length; index++) {
    list[index] =k;
    k=k*nums[index] 
  }
  k = 1
  for (let index = nums.length-1; index >=0; index--) {
    list[index]=list[index]*k
    k = k * nums[index]
  }
  return list
};
console.log(productExceptSelf([1, 2, 0, 4, 5]));

20210923_股票最大值

/**
 * @param {number[]} prices
 * @return {number}
 */
 var maxProfit = function (prices) {
  var max = 0;
  for (var i = 0; i < prices.length; i++) {
    for (var j = i + 1; j < prices.length; j++) {
      if (prices[j] - prices[i] > max)
        max = prices[j] - prices[i]
    }
  }
  return max
};
var maxProfit = function(prices) {
  let max = 0;
  let min = 99999
  for (let index = 0; index < prices.length; index++) {
    if(min>prices[i]){
      min=prices[i]
    }else{
      if(prices[i]-min>max)
      max=prices[i]-min
    }
  }
  return max
};
maxProfit(1)

20210913_输出了两个数组第四小的

var line = '1,2,3,4,5;6'
var l =line.split(';')[0]
var r = line.split(';')[1]
l = l.split(',')
r = r.split(',')
var ll = l.slice(0,4)
var rr = r.slice(0,4)
console.log(typeof ll,typeof l);
var aa = ll.concat(rr)
console.log(aa);

aa =aa.sort((c,b)=>{return c-b})
console.log(aa[3]);

20210912_牛客喆神装书

链接地址

var num = readline()
var books = readline()
var bags = readline()
books = books.split(' ')
bags = bags.split(' ')
var all = 0
var bags1 = bags.sort((a,b)=>{
return b-a})
for(let i = 0;i<books.length;i++){
    
    all = parseInt(all)+parseInt(books[i])
}
var c = parseInt(bags[0])+parseInt(bags[1])
// print(c)
// print(all)
if(c>=all){
print('YES')}else{
print('NO')}

20210902_ 皇后问题

var solveNQueens = function (n) {
    const result = []
    function getRowPos(rowIndex, arr = []) {
        if (rowIndex === n) {
            result.push(arr) 
            return
        }
        for (let col = 0; col < n; col++) {
            if (rowIndex === 0) {
                arr = [col] 
                getRowPos(rowIndex + 1, arr)
            } else {
                if (isOk(rowIndex, col, arr)) {
                    const newArr = [...arr] 
                    newArr.push(col) 
                    getRowPos(rowIndex + 1, newArr)
                }
            }
        }
    }

    function isOk(row, col, arr) {
        let leftTop = col - 1
        let rightTop = col + 1
        for (let i = row - 1; i >= 0; i--) {
            const lastPos = arr[i]
            if (lastPos === col) {
                return false
            }
            if (leftTop >= 0 && lastPos === leftTop) {
                return false
            }
            if (rightTop < n && lastPos === rightTop) {
                return false
            }
            leftTop--
            rightTop++
        }
        return true
    }

    function print() {
        return result.map(item => {
            return item.map(item2 => {
                let str = ''
                for (let i = 0; i < n; i++) {
                    if (item2 === i) {
                        str += '1'
                    } else {
                        str += '0'
                    }
                }
                return str
            })
        })
    }
    getRowPos(0) 
    return print()
};
console.log(solveNQueens(4));
前端参考

20210830_股票最大值

var maxProfit = function(prices) {
  var max = -9999;
  var thisPrice = null
  for(var i=0;i<prices.length;i++){
      for(var j=i+1;j<prices.length;j++){
          thisPrice = prices[j]-prices[i]
          if(thisPrice>max){
              max=thisPrice
          } 
      }
  }
  if(max>=0){
    return max
  }else{
    return 0
  }
};

20210829_子集

var subsetsWithDup = function(nums) {
    if (nums.length==0){
        return [nums];
    }
    if (nums.length==1){
        return [[],nums];
    }
    nums.sort((a,b)=>a-b);//先排序
    let result=[[]];//记录全部子数组
    let lastLength=0;//记录上一个元素添加前,result的长度
    for (let i=0;i<nums.length;i++){
        let j=0;
        if (i>0&&nums[i]==nums[i-1]){//当遇到重复元素时,从上一个元素添加前,result的长度处,开始每一个子数组都添加该元素
            j=lastLength;
        }
        let n=result.length;
        lastLength=result.length;//保持lastLength的更新
        for (;j<n;j++){//如果不是重复元素,j初始为0,从result开头,每个子数组都添加上该元素
            result.push([...result[j],nums[i]])
        }
    }
    return result;
};

20210828_快排

var quickSort = function(arr) {
  if (arr.length <= 1) {
    return arr;
  }
  var pivotIndex = Math.floor(arr.length / 2);
  var pivot = arr.splice(pivotIndex, 1)[0];
  var left = [];
  var right = [];

  for (var i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));
};

20210827_深拷贝

function deepClone(arr) {
	var obj = arr instanceof Array ? [] : {} //1
	for (var item in arr) {
		if (typeof arr[item] === "object") {
			obj[item] = deepClone(arr[item]);
		} else {
			obj[item] = arr[item];
		}
	}
	return obj;
}

20210826_全排列

var a = [1, 5, 2]
var path = [] //记录路径
var vis = [] //判断(保证无重复输出)
var list = []

function dfs(x) {
	if (x == a.length) {
		let lon = []
		for (var i = 0; i < a.length; i++) {
			lon.push(path[i])
		}
		list.push(lon)
		return
	}
	for (var i = 0; i < a.length; i++) {
		if (!vis[i]) {
			path[x] = a[i];
			vis[i] = true;
			dfs(x + 1);
			vis[i] = false;
		}
	}
}
dfs(0)
console.log(list);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是一个小树呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值