LeetCode-七进制数、最小高度二叉搜索树

2023-10-30

只是为了记录每天的练习(要好好加油啊呜呜呜现在的我还太拉了

思路很直接啊……就是转进制+数字转字符串。

class Solution {
public:
    string convertToBase7(int num) {
        if(num == 0)  //特殊情况  
            return "0";
        const int system = 7;//使其普遍适用于n进制
        bool flag;//记录num的正负性
        flag =  num > 0 ? true : false;
        string str;
        num = abs(num);//直接取绝对值运算
        while(num > 0)
        {
            str.append(1,num%system + '0');//append接收的是字符串或n个字符
            num /= 7;
        }
        if(!flag)
            str.push_back('-');
        reverse(str.begin(),str.end());//交换顺序
        return str;
    }
};

注意一下append的用法

str.append(num%system + '0');←如果是这么写就报错了

数字转字符串或者字符串转数字都要主要ASCII码的加减。。

题目

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例及提示

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

          0
         / \
       -3   9
       /   /
     -10  5

思路

首先,平衡二叉搜索树是一种结构平衡的二叉搜索树,即叶节点高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树(二叉搜索树定义:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值)。又名:二叉排序树,二叉查找树

其实思路也不困难,因为是有序数组,所以每次找出数组中的中点作为根结点就好,再将中点划分的前半边数组作为左子树递归使用,右边同理。注意递归的终止条件。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* createTree(vector<int>& nums,int left,int right)
    {
        if(left > right)
            return nullptr;
        int mid = (left+right)/2;
        TreeNode* root = new TreeNode(nums[mid]);
        root->left = createTree(nums,left,mid-1);
        root->right = createTree(nums,mid+1,right);
        return root;
    }

    TreeNode* sortedArrayToBST(vector<int>& nums) {
        return createTree(nums,0,nums.size()-1); 
    }
};

标注一下代码过程遇到的问题:

1.nullptr是c++中空指针的关键字。

2.看到题解中有人是这么写的:

auto ptr = new TreeNode(nums[mid]); //填充根节点

注意auto关键字。auto的原理就是根据后面的值,来自己推测前面的类型是什么。且用auto声明的变量必须初始化。

3.c++的构造函数用法。

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

LeetCode-七进制数、最小高度二叉搜索树 的相关文章

随机推荐

  • EasyX的下载与使用教程网址

    一 下载 下载网址 EasyX Graphics Library for C 1 点击右侧红色方框里的下载EasyX 2 下载成功后 进行点击 会出现以下界面 在点击下一步 点击安装就成功了 二 使用教程 EasyX 文档 使用教程 该网址
  • oneforall安装使用

    如遇到 安装出错 0x80070643 https www cnblogs com emanlee p 11422646 html 此软件需要python3环境 安python时 需要配置环境变量 此步在安装时即可勾选 在安装后 直接运行o
  • orbslam2段错误 (核心已转储)

    删除掉ORBSLAM的cmakelists中的 march native 以及 g2o 的cmakelists中的 march native 重新执行ORBSLAM目录下的 build sh 后就可以正常跑了
  • 第四届蓝桥杯(2013)-省赛题解_C/C++__大学A组

    目录 感悟总结 一 高斯日记 填空题 二 排它平方数 填空题 三 振兴中华 填空题 四 颠倒的价牌 填空题 五 前缀判断 代码补充 六 逆波兰表达式 代码补充 七 错误票据 八 买不到的数目 九 剪格子 十 大臣的旅费 感悟总结 蓝桥杯有大
  • cpu.h-栈的宏定义-满减栈

    常常两两相对的东西 整一起后有点记不住 就写下来 cpu h中有宏定义使用哪种栈 define OS STK GROWTH 1 Stack grows from HIGH to LOW memory on ARM 栈的四种 满栈 满 字表示
  • 错误解决:Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]

    今天又是快乐改错误的经历 在做k means进行图片压缩的实战项目中 我遇到了这样一个pyplot显示图像报错问题 Clipping input data to the valid range for imshow with RGB dat
  • Python中的字典用法

    文章目录 一 字典的定义 二 字典的创建 2 1 一个简单的字典 2 2 字典的嵌套 三 字典的特性 3 1 字典不支持切片 3 2 成员操作符 3 3 for循环遍历 四 字典元素的增加 五 字典元素的删除 六 字典元素的查看 七 字典的
  • 制作最简单的Git Server

    网上看到的Git Server部署方法一大堆 一会儿搞什么SSH 还要弄私钥公钥 复杂无比 其实有一个办法非常简单 如果是在公司内网环境下 需要将某台机器部署为Git Server 我们称该机器为服务器 假设IP为192 168 0 111
  • uni-app前端用户登录实现

    从0开始开发SpringBoot vue前后端分离项目 后端 Springboot简单实现用户登录操作 文章目录 从0开始开发SpringBoot vue前后端分离项目 后端 1 HBuildX uni app创建项目 一 项目目录结构 二
  • LinearLayer

    线性层的作用 类似于这边荧光绿的两层 就是fully connected layer 将1 1 4096的向量 变成1 1 1000的向量 代码示例 import torch import torchvision from torch im
  • dwr 使用 callback 多个参数(间接方法)

    dwrInvokeDataClaimAction findSupplierByName payee callback function returnData bringOutSupplierCallback returnData arg1
  • 【Redis】List类型和底层原理

    文章目录 List类型 1 List介绍 1 1常用命令 2 List底层实现 3 ziplist剖析 3 1ziplist结构 3 2创建一个空的ziplist 3 3ziplist的元素节点结构 3 4ziplisqt的连锁更新 3 5
  • Java 集合(List与LinkedList)接口详解

    List接口 List接口的定义 List interface List extends Collection 通过观察List接口的定义发现其继承得是Collection接口 List Set Queue接口继承的都是Collection
  • [持续开源中]用2000元左右做水下机器人

    1 水下机器人功能 1 平稳的运动控制 2 高清视频 3 定深悬停 巡航 2 相关技术 2 1 PC上位机 1 C Winform MVC 现有 2 C MAUI MVVM Socket 开发中 2 2 下位机 水下机器人 2 2 1 So
  • 最长连续子序列的起始位置

    用结构体保存结果 注意的是最长连续子序列需要的是连续 所以dp的状态方程别写错了 include
  • inotify_init使用

    用于监控文件 目录的修改创建删除等操作 也可以配合epoll使用 include
  • Upload-Labs-Windows Pass-01

    题目 解题 步骤1 上传文件 上传一句话木马 编辑文件a php 内容为 直接上传的话 会提示错误 题目要求选择图片格式上传 文件名改为a jpg 内容为 然后通过burp suite来修改上传文件名字 步骤2 改文件名 把a jpg改为a
  • 组件库技术选型总结

    Monorepo Multirepo 架构 Multirepo指的是将模块分为多个仓库 每个团队都拥有自己的仓库 他们可以使用自己的构建流程 代码规范等 但是同时也会存在很多问题 比如模块中间如果存在相互依赖 就必须到目标仓库里进行bug修
  • android动态权限的源码解析

    android 动态权限 android权限的类型 在android9 0中定义了很多权限 如下
  • LeetCode-七进制数、最小高度二叉搜索树

    只是为了记录每天的练习 要好好加油啊呜呜呜现在的我还太拉了 思路很直接啊 就是转进制 数字转字符串 class Solution public string convertToBase7 int num if num 0 特殊情况 retu