0223
思路:先计算出老板没控制自己的情绪时的满意数量sum,再根据X的值,维护一个滑动窗口
,遍历grumpy数组,计算增加的满意数量add,选取最大的一个,最后返回结果(sum+add)。
var maxSatisfied = function(customers, grumpy, X) {
let sum=0;
let add=0;
for(let i=0;i<customers.length;i++){
if(grumpy[i]==0){
sum+=customers[i];
}
}
for(let i=0;i<grumpy.length;i++){
let x=X;
let j=i;
let temp=0;
while(x){
if(grumpy[j]==1){
temp+=customers[j];
}
j++;
x--;
}
if(temp>add){
add=temp;
}
}
return sum+add;
};
0317
找出数组中第K大的数
function findMax(arr,K){
arr=[...new Set(arr)]
arr.sort((a,b)=>{return a-b;})
return arr[K-1];
}
console.log(findMax([5,1,2,4,4,8,11,13],2))
0318
给定若干个有限小数或者无限循环小数组成的求和表达式,请将小数转化为最简分数表示形式,并求和。
输入描述: 整数部分零不省略,小数部分中循环节用括号标记出来
输出描述:将表达式转换为最简分数形式,并求和
样例输入:2.00+0.46+0.25(285714)
样例输出:2+23/50+177/700=1899/700
let s='2.00+3.01+0.25(285714)'
let arr=s.split('+');
let left=[];
let fenmuRec=[];
for(let i=0;i<arr.length;i++){
let temp=arr[i].split('.');
toFenshu(temp);
}
let maxGys=maxGYS(fenmuRec);
let fenziRight=fenziResult(left,maxGys);
let [a,b]=huajian(fenziRight,maxGys);
console.log(left.join('+')+'='+a+'/'+b)
function toFenshu(temp){
if(temp[1]==0){
left.push(temp[0])
fenmuRec.push(1);
}
else{
if(temp[1].includes('(')){
let index1=temp[1].indexOf('(');
let index2=temp[1].indexOf(')');
let xiaoshu=temp[1].slice(0,index1);
let xunhuan=temp[1].slice(index1+1,index2);
let fenmu1=1;
let fenmu2='';
for(let i=0;i<xiaoshu.length;i++){
fenmu1*=10;
}
for(let j=0;j<xunhuan.length;j++){
fenmu2+='9';
}
let fenmu=fenmu1*Number(fenmu2);
let fenzi=(Number(temp[0])*fenmu)+Number(xunhuan)+(xiaoshu*Number(fenmu2));
let [a,b]=huajian(fenzi,fenmu);
left.push(a+'/'+b)
fenmuRec.push(b);
}else{
let fenmu=1;
for(let i=0;i<temp[1].length;i++){
fenmu*=10;
}
let fenzi=(temp[0]*fenmu)+Number(temp[1]);
let [a,b]=huajian(fenzi,fenmu);
left.push(a+'/'+b)
fenmuRec.push(b);
}
}
}
function huajian(fenzi,fenmu){
for(let i=2;i<=Math.min(fenzi,fenmu);i++){
if((fenzi%i==0)&&(fenmu%i==0)){
fenzi/=i;
fenmu/=i;
i=1;
}
}
return [fenzi,fenmu];
}
function maxGYS(fenmuRec){
let ret=Math.min.apply(null,fenmuRec);
for(let i=0;i<fenmuRec.length;i++){
if((fenmuRec[i]%ret==0)&&fenmuRec[i]>ret){
ret=fenmuRec[i];
}
else{
ret*=fenmuRec[i];
}
}
return ret;
}
function fenziResult(left,maxGys){
let fenzi=0;
for(let i=0;i<left.length;i++){
if(left[i].includes('/')){
let temp=left[i].split('/');
fenzi+=(maxGys/temp[1])*temp[0];
}else{
fenzi+=left[i]*maxGys;
}
}
return fenzi;
}
0319
二叉树!!!!
1、求二叉树深度(迭代)
function depth(root){
if(!root)return 0;
return Math.max(depth(root.left),depth(root.right))+1;
}
2、二叉树层序遍历
var levelOrder = function(root) {
let ret=[];
if(!root)return ret;
let quene=[root];
while(quene.length){
let levelarr=[];
let len=quene.length;
for(let i=0;i<len;i++){
let node=quene.shift();
levelarr.push(node.val);
(node.left)&&quene.push(node.left);
(node.right)&&quene.push(node.right);
}
ret.push(levelarr);
}
return ret;
};
0321
var setZeroes = function(matrix) {
let copy=[];
for(let i=0;i<matrix.length;i++){
copy[i]=[];
for(let j=0;j<matrix[0].length;j++){
if(matrix[i][j]==0)copy[i][j]=0;
else copy[i][j]=1;
}
}
for(let i=0;i<matrix.length;i++){
for(let j=0;j<matrix[0].length;j++){
if(matrix[i][j]==0&©[i][j]==0){
const tempi=i,tempj=j;
for(let x=0;x<matrix[0].length;x++){
(copy[tempi][x])==1&&(matrix[tempi][x]=0)&&(copy[tempi][x]=0);
}
for(let y=0;y<matrix.length;y++){
(copy[y][tempj])==1&&(matrix[y][tempj]=0)&&(copy[y][tempj]=0);
}
}
}
}
return matrix;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)