算法题算法题!!!!

2023-05-16

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];
        }
    }
    //console.log(sum);
    for(let i=0;i<grumpy.length;i++){
        let x=X;
        let j=i;
        let temp=0;//设置一个临时变量,记录增加的值
        while(x){//不能直接用X,因为后续会改变X值变为0
            if(grumpy[j]==1){//此时的j为i的值,同上,不能直接用i
                temp+=customers[j];
            }
            j++;
            x--;
        }
        if(temp>add){
            add=temp;//取结果较大的add
        }
    }
    //console.log(add);
    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 s='2.00+0.46+1.25(285714)'
// let s='2.00+0.46'
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);//最大公约数
// console.log(maxGys)
let fenziRight=fenziResult(left,maxGys);
let [a,b]=huajian(fenziRight,maxGys);
// console.log(left.join('+')+'='+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('(')){//无限循环小数
            // console.log('无限循环小数')
            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++){//循环数有几位,就除以几个9
                fenmu2+='9';                
            }
            //进行化简,就要得出循环小数此时的分子和分母
            //如0.25(285714) => 285714/((999999)*100)+25/100 
            //               => 285714+(25*999999)/((999999)*100)
            //如1.25(285714) => 1+285714/((999999)*100)+25/100
            //               => (((999999)*100)+285714+(25*999999))(分子)
            //               => (999999)*100 (分母)
            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){//最大公约数
    // console.log(fenmuRec)
    let ret=Math.min.apply(null,fenmuRec);
    // console.log(ret)
    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();
            // console.log(node);
            levelarr.push(node.val);
            // console.log(levelarr)
            (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;//原数组为0的地方标记为0,作为后续判断条件
            else copy[i][j]=1;//标记为1,表示可改          
        }
    }
    for(let i=0;i<matrix.length;i++){     
        for(let j=0;j<matrix[0].length;j++){ 
            if(matrix[i][j]==0&&copy[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);//已更改为0,不能再次识别为0
                }
                for(let y=0;y<matrix.length;y++){
                    (copy[y][tempj])==1&&(matrix[y][tempj]=0)&&(copy[y][tempj]=0);//已更改为0,不能再次识别为0
                }
            }
        }
    }
    return matrix;
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

算法题算法题!!!! 的相关文章

  • 【剑指offer】序列化二叉树

    解题思路 序列化时 xff0c 可以通过各种遍历方法 xff0c 例如层序遍历 递归遍历对二叉树进行遍历 xff0c 遍历过程中将每个节点的值拼接到字符串中 xff0c 注意每个节点之间用一个标识符隔开 xff0c 例如 xff0c 这是为
  • Linux cuda11.1安装torch_scatter,torch-sparse,torch-cluster,torch-spline-conv,torch-geometric

    创建虚拟环境 conda create n torch18 span class token assign left variable python span span class token operator 61 span span c
  • pytorch查看张量占用内存大小

    element size返回单个元素的字节大小 xff0c nelement返回元素个数 span class token keyword import span torch a span class token operator 61 s
  • MySQL8.0 集群安装 (K8S)

    尝试了很多版本的mysql镜像 xff0c 都存在这样那样的的问题 原始需求中 xff0c 需要同时支持x86 64 AMD64 和aarch64 ARM64V8 xff0c 最后找到Oracle官方出品的MySQL Server 8 0镜
  • 使用latex导出IEEE文献格式

    创建一个tex文件 xff0c 内容如下 documentclass span class token punctuation span a4paper span class token punctuation span 10pt span
  • IDEA中设置python解释器(不同虚拟环境)

    按住Ctrl 43 Shift 43 Alt 43 s xff0c 或 File gt Project Structure xff0c 在Module SDK处下拉找到对应的python解释器 xff0c 如果第一次添加python解释器
  • TF-IDF

    TF IDF xff08 term frequency inverse document frequency xff09 是一种用于信息检索与数据挖掘的常用加权技术 TF意思是词频 Term Frequency xff0c IDF意思是逆文
  • 第一次写博客-C/C++软件开发工程师需要学习哪些东西?

    学习路线概述 概述数据结构和算法操作系统计算机网络数据库设计模式 概述 作为一名本科机械电子 xff0c 研究生研究计算机视觉方向的211应届毕业生 xff0c 如何才能从事C C 43 43 软件开发类的工程师呢 xff1f 如果能有机会
  • Vue中使用v-for不能用index作为key值

    今天在改一个项目 xff0c 有一个 lt el tabs gt 的列表循环 xff0c 需要根据权限控制列表项的显示 xff0c 代码如下 xff1a span class token operator lt span template
  • java 冒泡排序 选择排序 插入排序及其异同点

    交换两坐标位置的swap 函数 之后要用到 span class token keyword public span span class token keyword static span span class token keyword
  • 自抗扰(ADRC)控制原理及控制器设计

    自抗扰控制是在PID控制算法基础上进行改进的新型控制方法 xff0c 它具有不依赖于控制对象模型 不区分系统内外扰的结构特点 常用的自抗扰控制器主要由跟踪微分器 xff08 Tracking Differentiator xff0c TD
  • LQR控制基本原理(包括Riccati方程具体推导过程)

    全状态反馈控制系统 状态反馈控制器 通过选择K xff0c 可以改变的特征值 xff0c 进而控制系统表现 LQR控制器 最优控制 xff0c 其本质就是让系统以某种最小的代价来让系统运行 xff0c 当这个代价被定义为二次泛函 xff0c
  • 运行VINS-Fusion时找不到vins_node节点的问题解决

    问题 xff1a 在执行 rosrun vins vins node span class token operator span span class token operator span catkin ws span class to
  • Faster RCNN(Pytorch版本)代码及理论笔记

    文章目录 前言一 Faster RCNN整体流程二 PASCAL VOC2012数据集1 简介2 下载方式3 文件结构及含义 三 加载数据集四 数据预处理1 流程2 标准化数据3 缩放4 将图片处理为统一尺寸5 数据预处理的输入输出 五 B
  • K8S 网络CNI

    1 简介 CNI 容器网络接口 Container Network Interface xff1a 由Google和Core OS主导制定的容器网络标准 xff0c 它仅仅是一个接口 xff0c 具体的功能由各个网络插件自己去实现 xff1
  • 二叉树-前-中-后序遍历

    二叉树 二叉树概念 xff1a 1 空树 2 非空 xff1a 根节点 xff0c 根节点的左子树 xff0c 根节点的右子树组成 注意 xff01 注意 xff01 时刻记得二叉树是根 xff0c 根的左子树 xff0c 根的右子树 xf
  • 变量的声明与定义&&内部函数与外部函数

    1 变量的声明与定义 对于函数 声明部分是对有关标识符 xff08 变量 函数 结构体 xff09 的属性进行声明 xff1b 函数的声明是函数的原型 xff0c 而函数的定义是对函数功能的定义 对被调函数的声明是放在主调函数的声明部分 x
  • 《Java面向对象编程(阿里云大学)》笔记(文档+思维导图)

    课程链接 xff1a https edu aliyun com course 1011 xff08 还是建议去看课程 xff0c 笔记仅供参考 由于文中的所有内容均为手敲 xff0c 并且有些代码并未验证 xff0c 因此如有错误 xff0
  • 《JDBC数据库开发进阶(阿里云大学》笔记(文档+思维导图)

    第1章 xff1a 事务处理 课时1 xff1a 事务的四大特性 xff08 ACID xff09 课时2 xff1a MySQL中开启和关闭事务 课时3 xff1a JDBC中完成事务处理 在JDBC中处理事务 xff0c 都是通过Con
  • PyCharm使用教程 --- 7、使用PyCharm进行DeBug调试

    很多新手朋友对PyCharm的使用无从下手 xff0c 于是花费了一点时间整理这份PyCharm操作手册 xff0c 完整PDF下载 xff1a 终于写完了 xff01 PyCharm操作手册 V1 0版本 PDF下载 目录如下 xff1a

随机推荐

  • FreeRTOS中断和任务之间的队列,自定义串口通讯协议

    本文提供这样一种方法 xff1a FreeRTOS中串口接收数据中断 xff0c 然后通过队列将数据传递给任务A xff0c 在任务A中对数据进行处理 xff0c 串口使用的通讯协议为自定义 依次给出了串口的初始化 中断服务函数 任务A x
  • 适用于FreeRTOS初学者,FreeRTOS整体知识框架

    写在前面 xff1a 因为实际使用需求 xff0c 学习了一段时间FreeRTOS 从FreeRTOS的市场占有率来看 xff0c 网上的资料应该很多 xff0c 但是在学习过程中尤其是遇到问题的时候 xff0c 发现真正有用的资料并不多
  • 串口通信float型数据的处理和发送;大端小端;联合体union占用字节大小;结构体的定义

    在介绍float型数据的处理和发送之前 xff0c 先介绍一下大端和小端以及联合体的大小分析 一 什么是大端小端 xff1f 如何测试你的CPU是大端还是小端 xff1f 1 大端小端 xff1a 小端 xff1a 采用小端模式的CPU对操
  • Python中以下划线开头的标识符

    1 以单下划线开头的变量 例如 foo代表禁止外部访问的类成员 xff0c 需通过类提供的接口进行访问 xff0c 不能用 34 from xxx import 34 导入 2 以双下划线开头的变量 例如 foo xff0c 代表类的私有成
  • 【CentOS 7】命令行安装GNOME、KDE图形界面(转载)

    目录 正文 一 进入 root 模式 二 安装 X 窗口系统 三 安装图形界面软件 GNOME 四 更新系统的默认运行级别 正文 CentOS 7 默认是没有图形化界面的 xff0c 但我们很多人在习惯了 Windows 的图形化界面之后
  • Git子模块使用教程

    Git子模块 1 问题背景 随着产品的日益增多 xff0c 各个产品之间的业务功能会出现高度的相同性 xff0c 比如产品A有串口的接收功能 xff0c 产品B也有相同的串口功能 xff0c 这类功能我们可以写成一个通用的串口接收模块 这样
  • K8S Flannel

    1 简介 Flannel 由CoreOS开发 xff0c 用于解决docker集群跨主机通讯的覆盖网络 overlay network xff0c 它的主要思路是 xff1a 预先留出一个网段 xff0c 每个主机使用其中一部分 xff0c
  • 阿里云服务器VNC使用步骤

    1 控制台设置 2 VNC桌面连接设置 yum安装太难 xff0c 不建议 分两步 xff1a 1 安装yum 2 安装VNC ubuntu 16 04中安装yum 在Ubuntu系统中按住 xff1a ctrl 43 alt 43 T 打
  • vscode 配置git

    下载git https git scm com 安装时 xff0c 直接默认所有选项安装 然后打开git安装目录 找到如下路径 打开vscode 点击文件 找到 首选项 点击设置 在搜索框搜索 git path 编辑settings jso
  • Intel D405 运行环境——Realsense-viewer

    第一章 Intel D405 运行环境 Realsense viewer 文章目录 第一章 Intel D405 运行环境 Realsense viewer一 开盲盒二 ubuntu环境下的realsense viewer安装 一 开盲盒
  • linux arm64 中断处理流程完整分析 (一)—— 中断向量表、中断处理流程汇编部分

    中断流程老生常谈 xff0c 但我一直以来也只是知道中断过来之后 xff0c 会保护现场 xff0c 跳到中断向量表 xff0c 执行中断 xff0c 恢复现场 xff0c 然后返回 至于更多细节 xff0c 就不得而知了 这篇文章旨在把更
  • ubuntu apt-get update 失败 server certificate verification failed

    报错提示解决方法step 1step 2step 3 报错提示 执行sudo apt get update时 xff0c 报错如下 Ign 188 https mirrors tuna tsinghua edu cn ubuntu xeni
  • mySQL创建数据库和数据表

    SQL 的主要功能是和数据库建立连接 xff0c 进行增删改查的操作 SQL是关系型数据库管理系统的标准语言 SQL 语言的作用 xff1a 数据定义语言 DDL Data Definition Language 用于创建数据库 xff0c
  • C++刷过的笔试题知识点

    函数若无返回值 xff0c 则它一定无形参 X 析构函数可以有参数 xff0c 但没有返回值 某32位系统下 C 43 43 程序void p 61 malloc 100 sizeof xff08 p xff09 61 4 xff1f 指针
  • 5-字符串

    1 字符串基础 1 1 定义字符串 通过String构造函数构造的字符串与字符串直接量的类型不同 前者为引用对象 xff0c 后者为值类型的字符串 span class token keyword var span s1 span clas
  • 没有Android SDK选项的解决办法+修改Android Studio中的Sdk路径

    安装教程 安装Android Studio时没有Android SDK选项 xff0c 可以先不管 xff0c 继续安装 注意在安装的过程中 xff0c 应该在最后一步install时 xff0c 会出现一个sdk的位置 比如我的在C Us
  • Android Studio一直在Download https://services.gradle.org/distributions/gradle-5.4.1-all.zip的解决方法

    Android Studio的新建工程下面一直出现Download https services gradle org distributions gradle 5 4 1 all zip 解决方法 xff1a 去https service
  • TDEngine 集群安装 (K8S)

    1 构建镜像 1 1 entrypoint sh span class token shebang important bin bash span span class token builtin class name set span 4
  • 设置Android Studio中的模拟器

    怎么设置Android Studio中的模拟器 xff0c 下面记录一下大概流程 然后自己选择设备 xff0c next 下好了之后next 建立后可能会出现以下图片所示问题 位于 的ADB二进制文件已过时 xff0c 并且在Android
  • 算法题算法题!!!!

    0223 思路 xff1a 先计算出老板没控制自己的情绪时的满意数量sum xff0c 再根据X的值 xff0c 维护一个滑动窗口 xff0c 遍历grumpy数组 xff0c 计算增加的满意数量add xff0c 选取最大的一个 xff0