当前位置: 首页 > wzjs >正文

合肥科技网站建设今日国际军事新闻

合肥科技网站建设,今日国际军事新闻,关键词seo优化排名,广告设计要学什么目录 1、二叉树使用前提2、算法题【1】搜索插入位置【2】在排序数组中查找元素的第一个和最后一个位置【3】x 的平方根【4】有效的完全平方数 1、二叉树使用前提 使用二叉树要满足以下两个条件: 1、有序数组 2、无重复值 2、算法题 【1】搜索插入位置 LeetCode第…

目录

  • 1、二叉树使用前提
  • 2、算法题
    • 【1】搜索插入位置
    • 【2】在排序数组中查找元素的第一个和最后一个位置
    • 【3】x 的平方根
    • 【4】有效的完全平方数

1、二叉树使用前提

使用二叉树要满足以下两个条件:

1、有序数组
2、无重复值

2、算法题

【1】搜索插入位置

LeetCode第35题,题目如下:

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被顺序插入的位置。
请必须使用时间复杂度为O(log n)的算法。

示例1:

输入:nums = [1, 3, 5, 6], target = 5
输出:2

示例2:

输入:nums = [1, 3, 5, 6], target = 2
输出:1

示例3:

输入:nums = [1, 3, 5, 6], target = 7
输出:4

代码示例:

func searchInsert(nums []int, target int) int {left, right := 0, len(nums)-1var index intfor left <= right {mid := left + (right-left)/2if target == nums[mid] {return mid} else if target < nums[mid] { //目标值在左区间right = mid - 1index = mid} else { //目标值在右区间left = mid + 1index = mid + 1}}return index
}

【2】在排序数组中查找元素的第一个和最后一个位置

LeetCode第34题,题目如下:

给一个按照非递减顺序排列的整数数组nums,和一个目标值target。请找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值target,返回[-1, -1]。
设计并实现时间复杂度为O(log n)的算法来解决问题。

示例1:

输入:nums = [5,7,7,8,8,10], target = 8
输出:[3, 4]

示例2:

输入:nums = [5,7,7,8,8,10], target = 6
输出:[-1, -1]

示例3:

输入: nums = [], target = 0
输出: [-1, -1]

代码示例:

func searchRange(nums []int, target int) []int {leftBorder, rightBorder := -2, -2 //左边界和右边界, 不能使用-1, 因为当目标值等于数组最左边值时,此时leftBorder=-1left, right := 0, len(nums)-1     //二分法查找的左右索引//先找右边界for left <= right {mid := left + (right-left)/2if target < nums[mid] { //目标值在左区间right = mid - 1} else {left = mid + 1rightBorder = left}}//再找左边界left, right = 0, len(nums)-1for left <= right {mid := left + (right-left)/2if target > nums[mid] { //目标值在右区间left = mid + 1} else {right = mid - 1leftBorder = right}}//判断三种情况if leftBorder == -2 || rightBorder == -2 { //目标值在最左边之外rightBorder=-2或者目标值在最右边之外leftBorder=-2return []int{-1, -1}} else if (rightBorder - leftBorder) > 1 { //目标值至少存在一个return []int{leftBorder + 1, rightBorder - 1}} else { //目标值的大小在数组范围内,但是没有相等的return []int{-1, -1}}
}

【3】x 的平方根

LeetCode第69题,题目如下:

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

示例 1:

输入:x = 4
输出:2

示例 2:

输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。

提示:

0 <= x <= 231 - 1

代码示例:

func mySqrt(x int) int {left, right := 0, xvar index intfor left <= right {mid := left + (right-left)/2if mid*mid == x {return mid} else if mid*mid < x { //平方根在右区间left = mid + 1index = mid} else { //平方根在左区间right = mid - 1index = right}}return index
}

【4】有效的完全平方数

LeetCode第367题,题目如下:

给你一个正整数 num 。如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。
不能使用任何内置的库函数,如 sqrt 。

示例 1:

输入:num = 16
输出:true
解释:返回 true ,因为 4 * 4 = 16 且 4 是一个整数。

示例 2:

输入:num = 14
输出:false
解释:返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。

提示:

1 <= num <= 231 - 1

代码示例如下:

func isPerfectSquare(num int) bool {left, right := 1, numfor left <= right {mid := left + (right-left)/2if mid*mid == num {return true} else if mid*mid > num { //目标值在左区间right = mid - 1} else { //目标值在右区间left = mid + 1}}return false
}
http://www.dtcms.com/wzjs/415034.html

相关文章:

  • 微信网站与响应式网站河南网站关键词优化代理
  • 个人动态网页制作的方法seo优化前景
  • 邯郸建设局网站资质申报google chrome 网络浏览器
  • 做神马网站优化快速排河南省最新通知
  • 煤炭建设行业协会网站百度搜索seo
  • 网站的手机客户端怎样做怎么网站推广
  • 做外贸网站案例产品运营主要做什么
  • 做企业网站国内发展搜索引擎优化与推广技术
  • 德阳做网站公司代发百度关键词排名
  • 池州网站开发公司招聘网站收录查询爱站
  • 重庆网站制作托管竞价代运营公司
  • 济南槐荫网站开发公司企业网站推广的形式有哪些
  • wordpress 教程 csdn南宁seo产品优化服务
  • 手机网站建设浩森宇特杭州seo
  • 网站栏目描述百度认证有什么用
  • 怎么找人做淘宝网站宁波seo在线优化
  • 南昌网站建设价位百度快照收录入口
  • 聊城高唐网站建设公司百度seo排名优化系统
  • pt网站怎么做个人网站设计模板
  • 如何再腾讯云服务器做网站网站排名优化需要多久
  • 定制家具十大品牌长沙快速排名优化
  • 企业宣传画册制作报价关键词整站优化公司
  • 徐州新沂网站建设百度刷排名seo软件
  • 科技部做财务决算的网站是什么宁波seo教程
  • 铜陵县住房和城乡建设局网站百度官网
  • 阿里云备案免费网站分析seo报告是坑吗
  • wordpress haiyuan搜索引擎优化排名关键字广告
  • 网站建设培训目标2022年最火文案
  • 中国有几大电商平台班级优化大师免费下载
  • 深圳本地做网站搜索引擎优化是指什么