1.将金额12345转成中文金额表示
要求
12345 => 一万两千三百四十五
10086 => 一万零八十六
100010001 => 一亿零一万零一
100000000 => 一亿
单位支持到亿
function numtostring(num) {
let number=['零','一','二','三','四','五','六','七','八','九']
let danwei=['','十','百','千','万','十','百','千','亿']
result=''
num=num+''
l=num.length
last=l-1
for(let i=0;i<l;i++){
if(num[i]!='0'){
result=result+number[num[i]]+danwei[last]
}else {
if(num[i+1]!=0)
result=result+'零'
}
last--
}
index=result.length-1
if(result[index]=='零'){
result=result.slice(0,index)
}
return result
}
console.log(numtostring(46000240))
2.leetcode55.跳跃游戏
用的贪心算法
var canJump = function(nums) {
let Maxjump=nums.length-1;
for(let i=nums.length-2;i>=0;i++){
if(i+nums[i]>=Maxjump){
Maxjump=i;
}
}
return Maxjump===0;
};
var merge = function(intervals) {
if(intervals.length<2){
return intervals;
}
let result=[];
intervals.sort((a,b)=>a[0]-b[0]);
let cur=intervals[0];
for(let i=1;i<intervals.length;i++){
if(intervals[i][0]<=cur[1]){
cur[1]=Math.max(cur[1],intervals[i][1]);
}else{
result.push(cur);
cur=intervals[i];
}
}
result.push(cur);
return result;
};
3.509. 斐波那契数
top-down解法:
var fib = function(N) {
if(N<=1){
return N;
}
let cache=[];
cache[0]=0;
cache[1]=1;
function memoize(num){
if(cache[num]!==undefined){
return cache[num];
}
else{
cache[num]=memoize(num-1)+memoize(num-2);
return cache[num];
}
}
let result=memoize(N);
return result;
};
bottom-up解法:
var fib = function(N) {
if(N<=1){
return N;
}
let cache=[];
cache[0]=0;
cache[1]=1;
for(let i=2;i<=N;i++){
cache[i]=cache[i-1]+cache[i-2];
}
return cache[N];
};
时间复杂度:O(N)
空间复杂度:O(1)
function fb3(n) {
let num1 = 1,
num2 = 2,
num3 = 0;
if (n < 1)
return -1;
if (n == 1 || n == 2)
return 1;
for (let i = 3; i < n; i++) {
num3 = num1 + num2;
num1 = num2;
num2 = num3
}
return num3
}
var search = function(nums, target) {
let left=0;
let right=nums.length-1;
let mid=left+Math.floor((right-left)/2);
while(left<=right){
if(nums[mid]==target){
return mid;
}else{
if(target>nums[mid]){
left=mid+1;
mid=left+Math.floor((right-left)/2);
}else{
right=mid-1;
mid=left+Math.floor((right-left)/2);
}
}
}
return -1;
};
5.剑指 Offer 55 - I. 二叉树的深度
var maxDepth = function(root) {
if(!root){return 0}
else{
let left=maxDepth(root.left);
let right=maxDepth(root.right);
return ((left>right)?left:right)+1
}
};