Leetcode刷题笔记7

69. x 的平方根

69. x 的平方根 - 力扣(LeetCode)

假设求17的平方根

解法一:暴力解法

从1开始依次尝试
比如1的平方是1,2的平方是4...直到5的平方,25>17,所以一定是4点几的平方,所以等于4

1  2  3  4  5  6  7
1  4  9  16 25 36 49

寻找二段性

可以把这些数抽象成一段横线

             ret
------------*--------------

ret左边的区域的平方后全是小于等于x,从这个位置开始右边的区域平方后全大于x

解法二:二分查找

先定义一个L(从1开始),一个R(x)
查找区间应该是从1到x

1. mid*mid <= x -> 落在左边区间,更新left指针,left = mid

2. mid*mid > x -> 落在右边区间,更新right指针,right = mid - 1 

代码:C++

class Solution {
public:int mySqrt(int x) {// x 有可能小于1if(x < 1) return 0; // 处理边界情况int left = 1, right = x;while(left < right){long long mid = left + (right - left + 1) / 2; // long long防溢出if(mid*mid <= x) left = mid;else right = mid - 1; // 根据模版,这里出现减法,就把求mid那里加1即可}return left;}
};

35. 搜索插入位置

35. 搜索插入位置 - 力扣(LeetCode)

寻找二段性

第一种情况:直接找到target

第二种情况:找不到target,要找插入位置

插入的位置应该是第一次比它大的这个数前面,或者最后
最终找到位置的这个值应该是大于等于target的
左边的区域全都小于target

[小于t][大于等于t           ]
-------------------------------
         ret

1. x < t -> left = mid + 1

2. x >= t -> right = mid

代码:C++

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] < target) left = mid + 1;else right = mid;}// 如果target插入位置在数组最后if(nums[left] < target) return left + 1; // right + 1也是对的,因为left和right已经相遇了return left;}
};

852. 山脉数组的峰顶索引

852. 山脉数组的峰顶索引 - 力扣(LeetCode)

先上升,到山顶,然后再下降

解法一:暴力枚举

定义一个指针从开始如果前一个数后一个数就不会是峰值,直接到下一个位置
当扫描到第一次数是大于后面的数的时候就是峰顶

时间复杂度:O(N)

优化:
山顶左边区间所有数都是大于前一个数,右边区间所有数都是小于前一个数

解法二:二分查找

二段性 - 能把数组分成两部分
中间值的下标为mid

1. 如果落在左边区间,mid包含在了最终结果里面,接下来去右边区间找
arr[mid] > arr[mid - 1] -> left = mid

2. 落在右边区间,要到左边区域找
arr[mid] < arr[mid - 1] -> right = mid - 1

代码:C++

class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left = 1, right = arr.size() - 2; // 抛开第一个和最后一个位置while(left < right){int mid = left + (right - left + 1) / 2;if(arr[mid] > arr[mid - 1]) left = mid;else right = mid - 1;}return left;}
};

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

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

相关文章

WSL2-Ubuntu22.04-配置

WSL2-Ubuntu22.04-配置 准备1. WSL相关命令[^1]2. WSL2-Ubuntu22.04可视化3. WSL2 设置 CUDA4. 设置OpenGL 本文介绍了WSL2的基本使用方法及可视化&#xff0c;着重介绍了GPU和OpenGL的设置。 准备 名称版本windows11wsl2CUDA12.5 1. WSL相关命令1 查看已安装的wsl distribut…

官方小游戏项目

一 项目原理&#xff1a;看广告&#xff0c;操作简单&#xff0c;时间自由&#xff0c;适合利用业余时间来做&#xff0c;一个广告大概在15s-30s之间。 二 介绍&#xff1a;给你开代理权限&#xff0c;你就有独立后台管理系统&#xff0c;监测每台手机每条广告的情况&#xff0…

MySQL数据表的“增删查改“

我们学习数据库, 最重要的就是要学会对数据表表进行"增删查改"(CRUD).(C -- create, R -- retrieve, U -- update, D -- delete) 目录 一. "增"(create) 1. 普通新增 2. 指定列新增 3. 一次插入多行 4. 用insert插入时间 5. 小结 二. "查"…

AI科技,赋能企业财务管理

AI技术已深入千行百业&#xff0c;其实际任务解决能力愈发凸显和强劲。正如乔布斯所强调“技术不是为工程师而生&#xff0c;而是为应用而生”。 胜意科技深度集成业内领先技术&#xff0c;将AI融入到实际的财务工作流中&#xff0c;与OCR、RPA等智能技术组合式输出&#xff0c…

Qt-qrencode生成二维码

Qt-qrencode开发-生成二维码&#x1f4c0; 文章目录 Qt-qrencode开发-生成二维码&#x1f4c0;[toc]1、概述&#x1f4f8;2、实现效果&#x1f4bd;3、编译qrencode&#x1f50d;4、在QT中引入编译为静态库的QRencode5、在Qt中直接使用QRencode源码6、在Qt中使用QRencode生成二…

Electron下载插件 or 固件至本地

最近有个特殊需求&#xff0c;由于路由器PCB板子是办公类型&#xff0c;无线传输类型&#xff0c;在特定情况下没有网络支持。则桌面应用程序里面的远程升级路由器功能无法使用&#xff0c;则就需要将OTA升级降至本地通过局域网的HTTP请求去实现。 1.下载代码 Downloads(url){…

BCC编程入门:揭开复杂面纱,探索编程之美

BCC编程入门&#xff1a;揭开复杂面纱&#xff0c;探索编程之美 BCC编程&#xff0c;对于初学者来说&#xff0c;仿佛是一个充满神秘与困惑的迷宫。然而&#xff0c;只要我们勇敢地踏入这片领域&#xff0c;逐步探索&#xff0c;便能够发现其中的奥秘与乐趣。本文将从四个方面…

Django Celery技术详解

文章目录 简介安装和配置创建并调度任务启动Celery Worker在视图中调用异步任务拓展功能 简介 Django Celery 是一个为Django应用程序提供异步任务处理能力的强大工具。它通过与消息代理&#xff08;如RabbitMQ、Redis&#xff09;集成&#xff0c;可以轻松地处理需要长时间运…

接口用例设计

设计接口用例的目的是为了提升工作效率&#xff0c;防止遗漏 并且能够通过用例&#xff0c;来实施测试监控 设计思路 功能 单个接口测试 接口业务场景测试&#xff08;过接口组合测试&#xff09; 性能 响应时间 吞吐量 服务器资源使用率 错误率 并发数 安全 敏感信息是…

LAMP分布式安全方案搭建网页 (LinuxCentOS7+Apache+Mariadb+PHP)包括服务端口及防火墙规则配置

目录 一、实验目的 二、设计方案及规划 三、实验内容及步骤 &#xff08;1&#xff09;实验前基础配置 &#xff08;2&#xff09;Test配置&#xff0c;安装Firefox浏览器和图形界面 &#xff08;3&#xff09;Web安装Apache &#xff08;4&#xff09;Database安装Mari…

微服务架构-微服务架构的挑战与微服务化的具体时机

目录 一、微服务架构的挑战 1.1 概述 1.2 服务拆分 1.3 开发挑战 1.4 测试挑战 1.4.1 开箱即用、一键部署的集成环境 1.4.2 测试场景和测试确定性 1.4.3 微服务相关的非功能测试 1.4.4 自动化测试 1.5 运维挑战 1.5.1 监控 1.5.2 部署 1.5.3 问题追查 1.5.4 依赖管…

高等教育的AI革新:OpenAI面向大学推出ChatGPT Edu

OpenAI推出了ChatGPT Edu&#xff0c;这是一个为大学设计的专用版本&#xff0c;旨在让学生、教职员工、研究人员和校园运营能够负责任地使用AI。 ChatGPT Edu 将AI技术引入了教育领域&#xff0c;其建立在GPT-4o的基础上&#xff0c;它不仅能够处理文本和图像&#xff0c;还…

【线性代数】【一】1. 1 线性方程组与线性组合

文章目录 前言一、线性方程组的求解1.1 直线的交点1.2 向量的加权求和 二、线性组合的表示范围三、线性方程组的解的分析总结 前言 有段时间没更新了&#xff0c;准备开个新坑&#xff0c;写点数学基础相关的内容&#xff0c;计划先过一遍线性代数&#xff0c;再扩展到矩阵论&…

更改 Docker 的默认存储位置

记录一下使用 Docker 遇到的问题&#xff0c;Docker 也用得比较多&#xff0c;最近发现根目录所在磁盘快满了&#xff0c;发现是 Docker 默认会将镜像和容器等数据保存在目录 /var/lib/docker 目录下&#xff0c;我们可以更改 Docker 的默认存储位置&#xff0c;比如改到数据盘…

【机器学习】深入探索机器学习:线性回归算法的原理与应用

❀线性回归算法 &#x1f4d2;1. 引言&#x1f4d2;2. 线性回归的基本原理&#x1f389;回归方程&#x1f389;最小化误差&#x1f389;线性回归的假设条件 &#x1f4d2;3. 线性回归算法的实现&#x1f4d2;4. 线性回归算法的特征工程&#x1f4d2;5. 线性回归模型评估与优化&…

【学习笔记】数据结构(二)

线性表 文章目录 线性表1、线性结构2、线性表2.1 线性表定义2.2 类型定义2.2 顺序存储结构&#xff08;Sequence List&#xff09;2.3 链式存储结构2.3.1 单链表2.3.2 循环链表2.3.3 双链表2.3.4 单链表、循环链表、双向链表的时间效率比较2.3.5 链式存储结构优缺点 2.4 顺序表…

【数字化风向标】合合信息重磅登陆CDIE 2024:引领创新,门票惊喜大放送!

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 6月25-26日&#xff0c;CDIE 2024 数字化创新博览会将在上海张江科学会堂举行。本届展览规模3300㎡&#xff0c;展位数量100&#xff0c;重点打造四大核心特色主题展区&#xff0c;包括行业数字化创新展区、企业…

Leetcode 105:从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 public static TreeNode buildTree(int[] preorder, int[] inorder) {map new HashMap<>(); …

智和信通助力中国移动湖南某市分公司县级政府外网运维项目

中国移动湖南某市分公司承建市下属某县政务外网网络建设项目&#xff0c;且在网络建设完工后&#xff0c;承担起运维职责&#xff0c;随着工作的推进市移动公司发现仅靠人力难以高效开展运维工作。 设备类型&#xff1a;OLT、ONU等通信设备 设备品牌&#xff1a;华为、中兴等…

TQSDRPI开发板教程:实现LWIP自环

项目资源分享 链接&#xff1a;https://pan.baidu.com/s/1QckFYSwua-Fpxk3tewledQ 提取码&#xff1a;bewt 打开vivado2019.1创建工程 下一步 设置工程名称与地址。勾选reate…选项&#xff0c;会创建一个新的文件夹&#xff0c;项目保存在其中&#xff0c;文件夹名称与工程名…