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

免费自助网站百度一下你就知道原版

免费自助网站,百度一下你就知道原版,企业二级网站怎么做,国家市场监督管理总局什么级别版本说明 当前版本号[20231118]。 版本修改说明20231118初版 目录 文章目录 版本说明目录搜索插入位置题目解题思路代码思路参考代码 最大子序和题目解题思路代码思路参考代码 搜索插入位置 题目 给定一个排序数组和一个目标值,在数组中找到目标值,…

版本说明

当前版本号[20231118]。

版本修改说明
20231118初版

目录

文章目录

  • 版本说明
  • 目录
  • 搜索插入位置
    • 题目
    • 解题思路
    • 代码思路
    • 参考代码
  • 最大子序和
    • 题目
    • 解题思路
    • 代码思路
    • 参考代码

搜索插入位置

题目

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:

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

示例 2:

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

示例 3:

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

示例 4:

输入: [1,3,5,6], 0
输出: 0

解题思路

  1. 初始化左右指针l和r,分别指向数组的第一个元素和最后一个元素。
  2. 当左指针小于右指针时,执行以下操作:
    a. 计算中间位置mid。
    b. 如果中间位置的元素小于目标值,将左指针移动到mid+1。
    c. 否则,将右指针移动到mid。
  3. 当循环结束时,检查左指针所指的元素是否小于目标值。如果是,则返回左指针+1;否则,返回左指针。

代码思路

  1. 定义一个名为Solution的类。

  2. 在Solution类中定义一个名为searchInsert的方法,接收两个参数:nums和target。其中nums是有序数组,target是要查找的目标值。

        # 定义一个名为searchInsert的方法,接收两个参数:nums和targetdef searchInsert(self, nums, target):
    
  3. 初始化左右指针l和r,分别指向数组的第一个元素和最后一个元素。

     # 初始化左右指针l和rl, r = int(0), len(nums) - 1
    
  4. 当左指针小于右指针时,执行循环。

  5. 计算中间位置mid。

      # 计算中间位置midmid = int((l + r) / 2)
    
  6. 如果中间位置的值小于目标值,则将左指针移动到中间位置的右侧;否则,将右指针移动到中间位置。

     # 如果中间位置的值小于目标值,则将左指针移动到中间位置的右侧if nums[mid] < target:l = mid + 1# 否则,将右指针移动到中间位置else:r = mid
    
  7. 循环结束后,如果左指针所指的值小于目标值,则返回左指针的右侧位置加1;否则,返回左指针所指的位置。

      # 如果左指针所指的值小于目标值,则返回左指针的右侧位置加1if nums[l] < target:return l + 1# 否则,返回左指针所指的位置return l
    
  8. 如果当前模块是主模块,则创建一个Solution类的实例s,并调用searchInsert方法,打印结果。

# 如果当前模块是主模块,则执行以下代码
if __name__ == '__main__':# 创建一个Solution类的实例ss = Solution()# 调用searchInsert方法,并打印结果print(s.searchInsert([1,3,5,6],5))

参考代码

这段代码是一个二分查找算法的实现,用于在一个有序数组中查找目标值应该插入的位置。

class Solution:def searchInsert(self, nums, target):l, r = int(0), len(nums) - 1while l < r:mid = int((l + r) / 2)if nums[mid] < target:l = mid + 1else:r = midif nums[l] < target:return l + 1return l 
if __name__ == '__main__':s = Solution()print (s.searchInsert([1,3,5,6],5))    

最大子序和

题目

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [0]
输出:0

示例 4:

输入:nums = [-1]
输出:-1

示例 5:

输入:nums = [-100000]
输出:-100000

提示:

1 <= nums.length <= 3 * 104
-105 <= nums[i] <= 105

进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 分治法 求解。

解题思路

  1. 初始化两个变量 maxEndingHere 和 maxSofFar,分别解题思路:
  2. 初始化两个变量 maxEndingHere 和 maxSofFar,分别表示以当前元素结尾的最大子数组和和全局最大子数组和。初始值都设为数组的第一个元素。
  3. 遍历数组中除第一个元素之外的其他元素。
  4. 对于每个元素,更新 maxEndingHere 的值。maxEndingHere 的更新规则是:取 maxEndingHere + nums[i] 和 nums[i] 中的较大值。这样可以保证 maxEndingHere 始终表示以当前元素结尾的最大子数组和。
  5. 同时更新 maxSofFar 的值。maxSofFar 的更新规则是:取 maxEndingHere 和 maxSofFar 中的较大值。这样可以保证 maxSofFar 始终表示全局最大子数组和。
  6. 遍历结束后,返回 maxSofFar 作为结果。

代码思路

  1. 定义一个名为Solution的类,继承自object。

  2. 在Solution类中定义一个名为maxSubArray的方法,接收一个参数nums。

        # 定义一个名为maxSubArray的方法,接收一个参数numsdef maxSubArray(self, nums):
    
  3. 初始化两个变量maxEndingHere和maxSofFar,分别赋值为nums的第一个元素。

      # 初始化两个变量maxEndingHere和maxSofFar,分别赋值为nums的第一个元素maxEndingHere = maxSofFar = nums[0]
    
  4. 遍历nums列表中从第二个元素开始的所有元素。

      # 遍历nums列表中从第二个元素开始的所有元素for i in range(1, len(nums)):
    
  5. 对于每个元素,更新maxEndingHere的值,取当前值与nums[i]之和与nums[i]中的较大值。

     # 更新maxEndingHere的值,取当前值与nums[i]之和与nums[i]中的较大值maxEndingHere = max(maxEndingHere + nums[i], nums[i])
    
  6. 同时更新maxSofFar的值,取maxEndingHere与maxSofFar中的较大值。

    # 更新maxSofFar的值,取maxEndingHere与maxSofFar中的较大值maxSofFar = max(maxEndingHere, maxSofFar)
    
  7. 遍历结束后,返回maxSofFar的值,即为整个数组的最大子数组和。

  8. 创建一个Solution类的实例s。

  9. 调用s的maxSubArray方法,传入参数nums,并打印结果。

    # 创建一个Solution类的实例s
    s = Solution()
    # 调用s的maxSubArray方法,传入参数nums,并打印结果
    print(s.maxSubArray(nums = [-2,1,-3,4,-1,2,1,-5,4]))
    

参考代码

这段代码是一个求解最大子数组和的算法。它使用了动态规划的思想,通过遍历数组并不断更新当前最大子数组和(maxEndingHere)和全局最大子数组和(maxSofFar),最终得到整个数组的最大子数组和。

class Solution(object):def maxSubArray(self, nums):maxEndingHere = maxSofFar = nums[0]for i in range(1, len(nums)):maxEndingHere = max(maxEndingHere + nums[i], nums[i])maxSofFar = max(maxEndingHere, maxSofFar)return maxSofFar
# %%
s = Solution()
print(s.maxSubArray(nums = [-2,1,-3,4,-1,2,1,-5,4]))
http://www.dinnco.com/news/50945.html

相关文章:

  • 北京西站地铁是几号线深圳产品网络推广
  • 传统网站建设团队太原seo公司
  • 网站开发好的公司推荐网站怎么被百度收录
  • 网站设计怎么算侵权游戏代理怎么找渠道
  • 两个域名同一个网站做优化网站建设设计
  • 做糕点的网站有哪些惠州seo外包服务
  • 微信公众号开发是否需要建立网站seo工具包括
  • wordpress中没有链接2022百度seo优化工具
  • 网上做平面设计兼职不错的网站枫树seo网
  • 商务网站建设的应用百度指数特点
  • 佛山专业建站公司如何进行seo
  • PS怎么布局网站结构灰色词快速排名接单
  • 医药公司网站建设淄博头条新闻今天
  • 成都党风廉政建设平台网站站长工具国产
  • php和什么语言做网站线上销售平台都有哪些
  • 正规网站做菠菜广告新媒体营销方式有几种
  • 外国黄网站色网址好口碑关键词优化
  • 遵义网站建设公司百度关键词seo排名
  • 上海seo网站优化谷歌浏览器下载
  • 苏州吴中区做网站搜索引擎营销例子
  • 网站注册费用需要多钱百度关键词优化教程
  • wordpress查询系统搜索引擎优化的含义
  • 公司都是自己制作网站网络推广理实一体化软件
  • 政府 社区网站建设产品营销策略有哪些
  • 苏州行业网站建设服务nba排名最新赛程
  • 山东做网站公司有哪些关键词优化排名软件怎么样
  • 蒙自市建设局网站seo优化排名易下拉效率
  • 广州专业网站建设哪家好快速seo关键词优化方案
  • 旧域名怎么做新网站优化网络推广外包
  • 信阳网站开发经典软文案例或软文案例