分冶算法 剑指 07 重建二叉树 排序算法:剑指45 把数组排成最小的数 10-I 斐波那契数列

news2024/9/30 3:20:00

在这里插入图片描述
来记录几个注意事项
1.vector容器里利用find()函数
不同于map(map有find方法),vector本身是没有find这一方法,其find是依靠algorithm来实现的。
所以要包含头文件


#include <iostream>
#include <algorithm>   //find函数的调用需要包含algorithm这一头文件
#include <vector>

另外返回类型并不是int 类型的索引 iterator迭代器类型的

auto inroot=find(vector.begin(),vector.end(),val)//假设在int类型的vector容器里找值为val的位置

2.关于在vector容器里根据找寻到的位置进行切片,前面为新的vector容器,后面为一个新的vector容器
错误写法

vector inleft=inorder(inorder.begin(),inroot);
这里并不是赋值操作,利用赋值是不对的
正确写法

vector<int> inleft(inorder.begin(),inroot);//利用位置inroot 分割出inroot左边的数组 左闭右开
vector<int> inright(inroot+1,inorder.end());//利用位置inroot 分割出inroot右边的数组 左闭右开

解法:递归

class Solution {
    //前序 中左右
    //中序 左中右
public:
    TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
        if(preorder.empty()||inorder.empty()) return nullptr;
        //1.根节点肯定是前序的第一个
        TreeNode* root=new TreeNode(preorder[0]);
        //2.在中序遍历中找一下根节点的位置 记住这个函数find(begin(),end(),val)
        auto inroot=find(inorder.begin(),inorder.end(),preorder[0]);
        //3.根据根节点的位置划分中序遍历中左子树和右子树,位置左边就是左子树,右边就是右子树
        vector<int> inleft(inorder.begin(),inroot);
        vector<int> inright(inroot+1,inorder.end());
        //4.根据中序遍历中左右子树的大小划分前序遍历数组
        int leftsize=inleft.size();
        vector<int> preleft(preorder.begin()+1,preorder.begin()+1+leftsize);
        //不能写成(1,leftsize+1)
        vector<int> preright(preorder.begin()+1+leftsize,preorder.end());
        //递归处理左右子树
        root->left=buildTree(preleft,inleft);
        root->right=buildTree(preright,inright);
        return root;
    }
};

在这里插入图片描述
思路:重新定义排序方式

sort(nums.begin(),nums.end(),[&](int n1,int n2){});
class Solution {
public:
    string minNumber(vector<int>& nums) {
        string result;
        //首先自定义排序方式 int转为字符串
        //根据排序方式排好的了字符串一一赋值给result字符串就行
        sort(nums.begin(),nums.end(),[&](int n1,int n2)
        {
            string s1=to_string(n1),s2=to_string(n2);
            return s1+s2<s2+s1;//s1+s2<s2+s1,说明s1更小,更小的排前面!

        });
        for(auto& num:nums) result+=to_string(num);
        return result;
    }
};

在这里插入图片描述

class Solution {
public:
    int fib(int n) {
        if(n==0) return 0;
        if(n==1) return 1;
        int x=0,y=0,z=1;
        for(int i=2;i<=n;i++)
        {
            x=y;
            y=z;
            z=(x+y)%1000000007;
        }
        return z;
    }
};

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

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

相关文章

线程字符串传递方式

//扩展作业--参数传递 //思路: 当子线程退出的时候,pthread_exit((void *)88)--->传递给主线程 pthread_join(tid,(void *)&ret1) //函数---参数 #include <pthread.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include …

Y型结构,Y-shape PEG SCM,Y型聚乙二醇琥珀酰亚胺乙酸酯,具有独特的空间结构

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ 规格单位&#xff1a;g |货期&#xff1a;按照具体的库存进行提供 | 纯度&#xff1a;95% PART1----​试剂描述&#xff1a; Y-shape PEG-SCM&#xff0c;Y型结构&#xff0c;具有2个PEG链和一个琥珀酰亚胺乙酸酯基因…

三用表校准仪TD1850多用表校准系统

直流电压标准源 ( DCV ) 输出范围&#xff1a;20 mV&#xff5e;1100 V 直流电流标准源 ( DCI ) 输出范围&#xff1a;2 μA&#xff5e;22 A或33 A 交流电压标准源 ( ACV ) 输出范围&#xff1a;20 mV&#xff5e;1100 V、45 Hz&#xff5e;1100 Hz 交流电流标准源 ( ACI )…

搜索与图论(一)

一、DFS与BFS 1.1深度优先搜索(DFS) DFS不具有最短性 //排列数字问题 #include<iostream> using namespace std;const int N 10; int n; int path[N]; bool st[N];void dfs(int u) {if(u n){for(int i 0;i < n;i) printf("%d",path[i]);puts("&qu…

抖音seo源代码开发搭建--开发者概述

抖音SEO源代码开发搭建需要有一定的开发技术和经验&#xff0c;一般需要掌握以下技能&#xff1a; 掌握HTML、CSS、JavaScript等前端技术&#xff0c;能够编写静态页面和交互效果&#xff1b;了解服务器端语言如PHP、Python等&#xff0c;并能够开发后端逻辑&#xff1b;熟悉数…

Android 中 app freezer 原理详解(一):S 版本

基于版本&#xff1a;Android S 0. 前言 在之前的两篇博文《Android 中app内存回收优化(一)》和 《Android 中app内存回收优化(二)》中详细剖析了 Android 中 app 内存优化的流程。这个机制的管理通过 CachedAppOptimizer 类管理&#xff0c;为什么叫这个名字&#xff0c;而不…

【AHK】通过唤醒窗口快捷菜单调节窗口位置/打开窗口控制菜单的其他方法

需求&#xff1a;触控板使用AHK传统控制窗口位置和大小的方式不方便&#xff0c;故打算通过快捷方式唤醒窗口移动图标的方式来调节。但本人有使用utools的习惯&#xff0c;altspace打开快捷方式菜单/窗口控制菜单会冲突&#xff0c;所以一直尝试新的打开该菜单的方式——先点击…

[语义分割] DeepLab v3(Cascaded model、ASPP model、两种ASPP对比、Multi-grid、训练细节)

Rethinking Atrous Convolution for Semantic Image Segmentation 论文地址&#xff1a;Rethinking Atrous Convolution for Semantic Image SegmentationPytorch 实现代码&#xff1a;pytorch_segmentation/deeplab_v3 这是一篇 2017 年发表在CVPR上的文章。相比 DeepLab V2 有…

一、前端高德地图注册、项目中引入、渲染标记(Marker)and覆盖物(Circle)

首先说明一下&#xff0c;下面的流程只是个人摸索and看文档梳理出来的&#xff0c;并不作为完全正确的流程。 首先&#xff0c;注册 高德开放平台 没有注册的可以点击右上角点击注册&#xff1b; 我们点个人的就ok&#xff1b; 信息完善之后我们到控制台&#xff0c;点击 应…

6个高清图片素材网站,免费下载,值得推荐~

关于图片素材网站&#xff0c;我一直都在推荐这几个&#xff0c;免费下载&#xff0c;可商用&#xff0c;建议收藏起来~ 菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx 网站主要是为新手设计师提供免费素材的&#xff0c;素材的质量都很高&#xff0c;类别也很多&a…

手机word怎么转换成pdf?这几个转换方法推荐给你

手机word怎么转换成pdf&#xff1f;将Word转换为PDF的主要原因是PDF格式具有更好的文件保护性和稳定性。PDF文件是一种可靠的文件格式&#xff0c;可以保护文件免受恶意软件和病毒的攻击&#xff0c;同时保持文件的格式和布局不变。此外&#xff0c;PDF文件可以在不同的操作系统…

【1】-Locust性能测试工具介绍与安装

Locust介绍 locust是一个开源的压测工具&#xff0c;其官网地址是Locust - A modern load testing framework&#xff0c;通过编写Python代码&#xff0c;可以轻松实现百万级的并发&#xff0c;相对于我们熟悉的Jmeter来说&#xff0c;其对压测机的要求更低&#xff0c;而且使…

MicroPython for ESP32

MicroPython for ESP32 开发板引脚图 环境搭建 参考资料 https://zhuanlan.zhihu.com/p/587027345 官方资料 https://docs.micropython.org/en/latest/ http://vcc-gnd.com/rtd/html/esp32/quickref.html#i2c 创建一个虚拟环境&#xff0c; conda create -n esp32 pytho…

编辑员工信息

1.根据员工id查询信息 Controller层 /** 根据员工id查询信息* */GetMapping("/{id}")ApiOperation("根据员工id查询信息")public Result<Employee> getById(PathVariable Integer id){log.info("根据员工id查询信息{}",id);Employee emplo…

pdf转换word软件哪个好?式?这款软件帮你轻松实现转换

在工作中&#xff0c;我们常常遇到这样的情况&#xff1a;我们的文件可能是PDF格式的&#xff0c;但对方要求我们以Word形式发送&#xff0c;因为Word相对于PDF占用更小的内存&#xff0c;打开更方便&#xff0c;发送时间更短。这时我们需要将PDF转换为Word格式&#xff0c;然而…

低代码开发平台源码:可视化敏捷开发工具,拖拽式自定义表单界面

低代码开发平台源码 低代码管理系统源码 无需代码或通过少量代码就可以快速生成应用程序的开发平台。 本套低代码管理后台可以支持多种企业应用场景&#xff0c;包括但不限于CRM、ERP、OA、BI、IoT、大数据等。无论是传统企业还是新兴企业&#xff0c;都可以使用管理后台快速构…

优惠券秒杀(三)

优惠券秒杀一人一单 优惠券的目的是为了引流&#xff0c;但是目前的情况是一个人可以无限制的抢这个优惠券&#xff0c;因此&#xff0c;代码中应该添加一个用户只能下一单的逻辑。保证一个用户只能抢一张券&#xff0c;则只要保证该用户下的优惠券只要一张&#xff0c;即根据优…

List<List<>> 转 List lambda,List<HashMap<>>转List<>

1、在实际的业务处理中&#xff0c;我们经常会碰到需要合并同一个集合内相同属性对象的情况&#xff0c;比如&#xff0c;同一个用户短时间内下的订单&#xff0c;我们需要将各个订单的金额合并成一个总金额。那么用lambda表达式和HashMap怎么分别处理该种情况呢&#xff1f;本…

vue3如何设置全局过滤器、app.config.globalProperties如何使用配置

vue3 相比于 vue2 取消了很多的API&#xff0c; filter就在其中&#xff0c;但是我们可以使用其他方法替代vue2中的filter 通过 app.config.globalProperties 来注册一个全局都能访问到的属性 我们再来说说 app.config.globalProperties 是什么&#xff0c;如何使用&#xff…

httpd升级2.4.57及后续问题处理

文章目录 背景信息操作步骤构建rpm包升级httpd启动httpd报错及处理缺少mod_systemd缺少mod_cgi 相关文件 背景信息 由于2.4.37版本httpd有安全漏洞&#xff0c;需要升级到2.4.57版本&#xff0c;2.4.57版本是当前最新的版本&#xff0c;只具备源码包&#xff0c;不具备rpm包&a…