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

微课做动画的网站江西住房和城乡建设部网站

微课做动画的网站,江西住房和城乡建设部网站,wordpress标题不能空,网站图片描述怎么写1.两数之和 给定一个整数数组 nums 和一个整数目标值 target#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任…1.两数之和 给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1 输入nums [2,7,11,15], target 9 输出[0,1] 解释因为 nums[0] nums[1] 9 返回 [0, 1] 。 示例 2 输入nums [3,2,4], target 6 输出[1,2] 示例 3 输入nums [3,3], target 6 输出[0,1] 方法一、暴力解法 该解法即对numsnumsnums进行双重遍历将所有两个数组合情况均列举一遍若有符合题意情况直接返回即可 from typing import List def twoSum(nums: List[int], target: int) - List[int]:for i in range(len(nums)):for j in range(i1,len(nums)):if nums[i]nums[j]target:return [i,j] nums[2,7,11,15] target 17 atwoSum(nums,target) print(a)#[0, 3]方法二、二分查找法 在暴力解法中第二层遍历是对iii后面的元素进行无差别枚举这样会导致非常多的无效枚举。 我们可以借助二分算法来对内层循环从时间上进行优化。 因为二分算法的前提是“有序”则我们需要先对numsnumsnums进行排序。 又因为返回答案需要原numsnumsnums顺序所以我们不妨提前将numsnumsnums中的值与其下标做一个绑定统一排序 import bisect from typing import Listdef twoSum(nums: List[int], target: int) - List[int]:n len(nums)#print(list(zip(nums, range(n))))#[(2, 0), (11, 1), (7, 2), (15, 3)]nums sorted(zip(nums, range(n))) # O(nlogn)print(nums)#[(2, 0), (7, 1), (11, 2), (15, 3)]# 以下部分时间复杂度为O(nlogn)for i in range(n):t target - nums[i][0]print(t is:,t)j bisect.bisect_left(nums, (t, ), i 1, n)#见如下备注print(j is:,j)if j n and nums[j][0] t:return [nums[i][1], nums[j][1]]#[1, 3]return []nums[2,11,7,15] target 26 atwoSum(nums,target) print(a) # t is: 24 备注 t为24然后在nums中查找24从i为1查到3则查到24在nums中处于第4位置所以j为4 # t is: 19 备注 t为19然后在nums中查找19从i为2查到3则查到19在nums中处于第4位置所以j为4 # t is: 15 备注 t为15然后在nums中查找15从i为3查到3则查到15在nums中处于第3位置所以j为3 # [1, 3]方法三、双指针 在上面二分查找的优化中可发现“有序”可以极大的优化内层循环的时间复杂度 发散思维摒弃内外层循环的思路“有序”是否还可以发挥更大的作用呢 答案是可以的即使用双指针算法 from typing import Listdef twoSum(nums: List[int], target: int) - List[int]:n len(nums)nums sorted(zip(nums, range(n))) # O(nlogn)#一定要排序要不然可能返回不了正确的结果print(nums)#[(2, 0), (6, 6), (7, 2), (9, 7), (11, 1), (12, 5), (15, 3), (26, 4)]# 以下部分时间复杂度为O(n)left, right 0, n - 1while left right:if nums[left][0] nums[right][0] target:return [nums[left][1], nums[right][1]]elif nums[left][0] nums[right][0] target:right - 1else:left 1return []nums[2,11,7,15,26,12,6,9] target 20 # nums[2,5,1,4,7,3,33,20,9] # target 36#如果不排序则返回不了正确的结果 atwoSum(nums,target) print(a) #总结排序后为[(2, 0), (6, 6), (7, 2), (9, 7), (11, 1), (12, 5), (15, 3), (26, 4)] #从小到大排好后首先是2262828大于20则right-1因为最小的数加上最大的数target,则这里最大数28舍弃 #因为28和最小的相加都大于20和其它数相加更大于20所以right-1 #接下来就是2151717小于target所以要找更大的数和15相加所以left-1
http://www.pierceye.com/news/984760/

相关文章:

  • 网站标题会影响吗wordpress改域名修改哪里
  • 做音乐网站需要版权么工业设计图片产品
  • 外包网站问些什么问题浙江省信息港成绩查询
  • 手机网站怎么dw做官方网站下载打印机的驱动
  • 网站被攻击空间关了怎么办网站用的是什么语言
  • 欧亚专线快递查询商丘seo
  • 网站建设跟加入会员哪个效果好网站建设优化开发公司哪家好
  • 网站建设执行力wordpress php解密算法
  • 青岛网站设计皆挺青岛造价人员做兼职的网站
  • 潍坊cms建站系统wordpress 朴素
  • 网站建设方面的课程国外 图片网站
  • 网络哪里能接活做网站新浦网站制作网站建设
  • 新手自己做网站凡科网建设网站如何修改源代码
  • 做自媒体发视频用哪些网站贵州网站建设联系电话
  • 可以提供排版的网站友情链接怎么弄
  • 优秀网站建设空间海口 网站建设
  • 设计网站页面出现问题九江哪家网站建设公司好
  • 深圳做企业网站的公司成都公司展厅
  • 两学一做 网站t型布局网站怎么做
  • 论坛网站建设联系方式成都网站设计制作价格
  • 网页网站建设的ppt模板下载响应式网站项目
  • 做网站在哪里可以找到高清壁纸北京响应式网站
  • 企业网站建设门户网站建设费的摊销年限
  • 模板网站的域名是什么网站源代码程序
  • 网站空间多久续一次费长春网站制作设计
  • 网站制作价格低广西网络电视
  • 平台网站建设收费烟台网站的优化
  • 如何做提卡网站vue.js wordpress
  • 国家网站备案查询系统wordpress 主题 简洁
  • 建设商业网站html什么意思