《剑指offer》每日三题

news2024/11/16 7:49:08

这里使用的是题库:
https://leetcode.cn/problem-list/xb9nqhhg/?page=1这里是引用

目录

  • 剑指 Offer 07. 重建二叉树
  • 剑指 Offer 14- I. 剪绳子
  • 剑指 Offer 14- II. 剪绳子 II

剑指 Offer 07. 重建二叉树

递归思想:这里是引用
在这里插入图片描述
代码

class Solution {
    int pPre=0;//用于遍历preorder数组
    public TreeNode build(int[] preorder, int[] inorder,int start,int end){
        //建立完成返回
        if(pPre==preorder.length){
            return null;
        }
        //代表该子树为空
        if(end<start){
            return null;
        }
        //获取在pPre指向位置的中序遍历内的下标
        int index=-1;
        for(int i=start;i<=end;i++){
            if(preorder[pPre]==inorder[i]){
                index=i;
                break;
            }
        }
        TreeNode root=new TreeNode(preorder[pPre]);
        pPre++;
        if(end-start==0){//如果子树只有一个结点,直接返回
            return root;
        }
        root.left=build(preorder,inorder,start,index-1);
        root.right=build(preorder,inorder,index+1,end);
        return root;
    }
    public TreeNode buildTree(int[] preorder, int[] inorder) {
       return build(preorder,inorder,0,preorder.length-1);
    }
}

剑指 Offer 14- I. 剪绳子

这里是引用

代码实现:

class Solution {
    public int cuttingRope(int n) {
        //判断特殊情况
        if(n==2)return 1;
        if(n==3)return 2;
        int[] dp=new int[n+1];
        //放置初始值
        dp[1]=1;
        dp[2]=2;
        dp[3]=3;
        //递归求解
        return lengthest(dp,n);
    }

    private int lengthest(int[] dp,int n){
        //如果dp数组中该位置有计算好的值直接返回
        if(dp[n]!=0){
            return dp[n];
        }
        //计算最大值--默认不切割
        int max=n;
        //开始切割
        for(int i=2;i<=n/2;i++){
            if(lengthest(dp,i)*lengthest(dp,n-i)>max){
                max=lengthest(dp,i)*lengthest(dp,n-i);
            }
        }9
        dp[n]=max;
        return max;
    }
}

剑指 Offer 14- II. 剪绳子 II

与上一题的区别是n的范围更大了,有溢出的可能。再利用前面的动态规划就不好处理了,这里得采用一些数学的推理。我是推不出来,看了一下其他大佬的解析,得到了以下三点:
切分规则:
最优: 3 。把绳子尽可能切为多个长度为 33 的片段,留下的最后一段绳子的长度可能为 0,1,20,1,2 三种情况
次优: 2 。若最后一段绳子长度为 2 ;则保留,不再拆为 1+1
最差: 1 。若最后一段绳子长度为 1;则应把一份 3 + 1替换为 2 + 2

切分规则有了,这里最大的问题就变成了如何取模
只要在每一次累乘时判断一下,超过了就取模1000000007,值得注意的是这里使用的类型是long,因为int类型最大值为21亿多,乘3很容易就溢出了。

代码实现:
return的()都要加,因为强制类型转换执行优先级更高,例如这样就会出错:
return (int)max*2%1000000007;

class Solution {
    public int cuttingRope(int n) {
        if(n==2)return 1;
        if(n==3)return 2;
        long max=1;
        while(n>4){
            n-=3;
            max=(max*3)%1000000007;
        }
        if(n==4){
            return (int)(max*4%1000000007);
        }else if(n==3){
            return (int)(max*3%1000000007);
        }else{//n==2 不会存在n=1的情况
            return (int)(max*2%1000000007);
        }
    }
}

共勉
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解HashMap

HashMap集合 1. HashMap集合简介 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。hashMap的实现不是同步的&#xff0c;这就意味着它不是线程安全的。它的key、value都可以为null。此外&#xff0c;HashMap中的映射不是有序的。 JDK1.8之前…

短视频上热门技巧总结,这样做你也可以快速上热门。

最近开始做短视频&#xff0c;找了很多短视频运营创作技巧&#xff0c;但能上热门的只有那么几个&#xff0c;经过近一周的分析&#xff0c;结合了我赢上短视频运营创作技巧&#xff0c;得到了以下几个经典技巧合集&#xff1a;学会一个就值了。 首先说一下&#xff1a;什么样的…

团簇生长过程-Ovito渲染

文章目录一、选择出团簇原子和非团簇原子1. 选择团簇原子2. 删除非团簇原子二、选择出团簇原子和非团簇原子1. 团簇分析2. 团簇具体信息三、渲染团簇1、 对团簇进行选择2、 获得团簇渲染后的结果四、渲染结果五、 案例dump下载博文《根据近邻列表法识别团簇—冷凝成核 MatlabOv…

java06-面向对象1

一&#xff1a;面向对象学习内容&#xff1a; 1.java 类及成员&#xff1a;属性、方法、构造器、代码块、内部类 2.面向对象三大特征&#xff1a;封装、继承、多态 3.其他关键字&#xff1a;this、super static、final、abstact、interface 、package、import 二&#xff…

iPhone/iPad上值得推荐的5个免费PDF转Word

PDF 文件是在不同平台上传输数据的最便捷方式&#xff0c;可确保保持高端信息质量。处理将不同文件格式转换为 PDF 的任务通常很麻烦&#xff0c;尤其是在 iOS 设备上。为了解决这个问题&#xff0c;这里讨论了您可以轻松依赖的前 5 个iPhone PDF 转换器工具。 适用于 iPhone 和…

多传感器融合定位六-惯性导航原理及误差分析

多传感器融合定位六-惯性导航原理及误差分析1. 惯性技术简介1.1 惯性技术发展历史1.2 惯性器件1.2.1 机械陀螺(几乎没人用了)1.2.2 激光陀螺1.2.3 光纤陀螺1.2.4 MEMS陀螺(常用)1.2.5 加速度计2. 惯性器件误差分析2.1 信号误差组成2.2 Allan方差分析3. 惯性器件内参标定3.1 惯性…

十六、状态管理——Vuex(1)

本章概要 简单的状态管理安装 Vuex基本用法 Vuex 是一个专门为 Vue.js 应用程序开发的状态管理模式。他采用集中式存储来管理应用程序中所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。 Vuex 也被集成到了 Vue 官方调试工具 vue-devtools 中…

跨年夜,想请你看一场烟花秀!

代码分享地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1Cu_lKYfAlMBDttSzhVXPuQ 提取码&#xff1a;2ocd 代码效果展示&#xff1a; 源代码分享如下&#xff1a; <!--* Author: Xiao Wang* Date: 2022-12-30 14:26* Description: --> <!DOCTYPE html …

剑指 Offer 20. 表示数值的字符串

题目 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。 数值&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 若干空格 一个 小数 或者 整数 &#xff08;可选&#xff09;一个 ‘e’ 或 ‘E’ &#xff0c;后面跟着一个…

canopen11-sdo-2b写入命令

源码 1、SDO介绍 就对象而言,主机要访问节点词典的数据,因此主机是client客户端,节点是server服务器。上传与下载是对服务器来说的(这点和常识有点不太一样)。因此,上传指的是服务器发送数据给客户端,下载是客户端给服务器数据。 我们这里要用主机访问节点服务器2000位…

Go 语言从入门到实战

《Go 语言从入门到实战》 的学习笔记&#xff0c;欢迎阅读斧正。感觉该专栏整体来说对有些后端编程经验的来说比无后端编程经验的人更友好。 数据类型 运算符 算数运算符 比较运算符 用 比较数组 相同维数切含有相同个数元素的数组才可以比较&#xff0c;每个元素都相同的才…

四旋翼无人机学习第18节--cadence的bom表、网表导出,PCB板创建,层叠设置

文章目录1 bom表导出2 网表导出3 PCB板创建4 PCB板文件重要设置5 层叠设置1 bom表导出 1、选择DSN文件&#xff0c;之后依次点击Tools&#xff0c;Bill of Materials。 2、当然&#xff0c;也可以点击图标进行bom导出。 3、下图标出的地方可以自行修改&#xff0c;最后点击O…

设计师必须知道的 5个设计灵感网站

设计没灵感&#xff0c;一定要上这5个网站&#xff0c;设计师每天必逛&#xff0c;建议收藏&#xff01; 设计素材免费下载&#xff1a; https://www.sucai999.com/?vNTYwNDUx 国内灵感网 1、设计之窗 http://www.333cn.com/ 设计之窗是一个设计师分享作品及备案的网站&…

【Ctfer训练计划】——命令执行的解题技巧(持续更新中)

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

什么是软考?软考有什么作用?

一、软考是什么&#xff1f; 1.软考介绍 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试是由国家人力资源和社会保障部、工业和信息化部领导的国家级考试&#xff0c;其目的是&#xff0c;科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术…

保姆教程系列三、Redis高可用(Cluster集群模式)

系列文章目录 &#xff01;&#xff01;&#xff01;是的没错&#xff0c;胖友们&#xff0c;保姆教程系列又更新了&#xff01;&#xff01;&#xff01; 保姆教程系列一、Redis部署 so easy 保姆教程系列二、Redis高可用&#xff08;主从同步哨兵模式&#xff09; 保姆教程系…

java开发的医院体检预约系统

简介 体检项目预约网站&#xff0c;普通用户注册登录可以网上预约体检项目&#xff0c;经过后台人员审核后可以去体检。用户还可以记录自己的身体指标下载体检报个&#xff0c;查看医嘱等。医院后台可以进行权限管理&#xff0c;实现多角色管理后台的其他业务等&#xff0c;实…

前端—化繁为简

化繁为简 HTML5要的就是简单、避免不必要的复杂性。HTML5的口号是“简单至上&#xff0c;尽可能简化”。因此&#xff0c;HTML5做了以下改进&#xff1a; 以浏览器原生能力替代复杂的JavaScript代码。 新的简化的DOCTYPE。 新的简化的字符集声明。 简单而强大的HTML5API。 我…

【 shell 编程 】第2篇 判断

判断 文章目录判断一、条件测试二、流程控制1.单分支结构2.双分支结构3.多分支结构4.嵌套结构三、匹配模式一、条件测试 格式&#xff1a; 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] 格式3&#xff1a;[[ 条件表达式 ]] 注意&#xff1a;[] 中的条件…

电气器件系列三十五:开关电源选型实例

开关模式电源&#xff08;Switch Mode Power Supply&#xff0c;简称SMPS&#xff09;&#xff0c;又称交换式电源、开关变换器&#xff0c;是一种高频化电能转换装置&#xff0c;是电源供应器的一种。其功能是将一个位准的电压&#xff0c;透过不同形式的架构转换为用户端所需…