首页 > 编程语言 >吴师兄学算法day07 167. 两数之和 II - 输入有序数组

吴师兄学算法day07 167. 两数之和 II - 输入有序数组

时间:2024-01-15 10:37:33浏览次数:40  
标签:right target day07 II numbers 数组 指针 两数 left

题目:167. 两数之和 II - 输入有序数组

易错点:

  • 下标为1开始

我的代码:

class Solution:
    def twoSum(self, numbers: List[int], target: int) -> List[int]:
        right = len(numbers) -1
        left = 0
        while left < right:
            ans = numbers[left]+numbers[right]
            if ans > target:    # 大于 右边的往里面缩小
                right -=1
            elif ans < target:  # 小于 左边的扩大
                left +=1                
            else:
                return [left+1,right+1] # 题目说下标为1,所以结果都加1

老师的代码:

class Solution:
    def twoSum(self, numbers: List[int], target: int) -> List[int]:

        # 初始结果数组
        res = [0, 0]

        # 定义左侧指针left,指向数组中第一个元素
        # 默认从数组的索引为 0 的位置开始
        left = 0

        # 定义右侧指针 right,指向数组中最后一个元素
        right = len(numbers) - 1

        # 两个索引向内移动
        # left 向右移动
        # right 向左移动
        while left < right:
            # 1、如果左侧指针与右侧指针所指向的元素和等于目标值,则返回结果
            if numbers[left] + numbers[right] == target:
                # 题目说明下标从 1 开始,就操作一下
                res[0] = left + 1

                res[1] = right + 1

                # 返回结果
                return res

            # 2、如果左侧指针与右侧指针所指向的元素和小于目标值
            elif numbers[left] + numbers[right] < target:

                # 因为数组是升序排列的,为了让两数之和变大一些
                # 因此应将左侧指针向右移动一位
                left += 1

            # 3、如果左侧指针与右侧指针所指向的元素和大于目标值
            elif numbers[left] + numbers[right] > target:

                # 因为数组是升序排列的,为了让两数之和变小一些
                # 因此应将右侧指针向左移动一位
                right -= 1

        # 返回结果
        return res

扩展写法:

总结:

  • 老师这个题,没我写的好
  • QQSS

参考:

https://r07na4yqwor.feishu.cn/docx/GhfkdsrOqopiJCxg3AucaphtnQf

标签:right,target,day07,II,numbers,数组,指针,两数,left
From: https://www.cnblogs.com/liqi175/p/17964867

相关文章

  • IIS实现负载均衡,通过ARR和URL重写
    目录一、实现整体方式介绍 二、配置负载均衡服务 三、把请求转发到负载均衡器 回到顶部一、实现整体方式介绍项目中部署在windows服务器上的项目,需要部署负载均衡,本来想用nginx来配置的,奈何iis上有几个项目,把80端口和443端口占用了,nginx就用不了了(因为通过域名访......
  • 吴师兄学算法day07 双指针 125. 验证回文串
    题目:125. 验证回文串易错点:isaplha()isdigit()lower()要熟悉,挺有用的。我的代码:classSolution:defisPalindrome(self,s:str)->bool:ans=''foriins:ifi.isalpha()ori.isdigit():ans+=i.lower()#......
  • IIC
    IIC读写EEPROM1、EEPROM字节写:起始信号,从机地址,R/W,ACK,写入地址,数据,ACK,停止信号页写:在写入地址处进行连续的写入数据,不需要每次发送写入地址(1页是8byte,当写入数据的大小超过8byte后会从头开始写入)当前地址读:EEPROM内部有指针,从当前指针所指的位置读取数据随机读:起始信号,从机地......
  • 吴师兄学算法day07 双指针 9. 回文数
    题目:9. 回文数易错点:右指针要记得移动我的代码:classSolution:defisPalindrome(self,x:int)->bool:array=list(str(x))right=len(array)-1forleftinrange(len(array)//2):ifarray[left]==array[right]:......
  • [刷题班] LeetCode80. 删除有序数组中的重复项II
    题目描述思路:快慢指针slow指针指向已经处理元素的下一个位置因为数组有序,如果nums[fast]==nums[slow-2],那么nums[fast]肯定等于nums[slow-1],那么此时这个数就出现了三次。此时slow保持不变,fast继续遍历。关键:nums[fast]!=nums[slow-2]方法一:classSolution{......
  • 454. 四数相加 II
    暴力不用多说,肯定是超时的,时间复杂度达到了O(n^4)classSolution{public:intfourSumCount(vector<int>&nums1,vector<int>&nums2,vector<int>&nums3,vector<int>&nums4){intnum=0;for(inti=0;i<nums1.siz......
  • Nginx采用虚拟目录的方式代理IIS站点
    Nginx采用虚拟目录的方式代理IIS站点起因背景由于IIS出现了某种不可知的问题,H5APP的部署从IIS改为Nginx。H5APP的Nginx的部署比较简单,直接修改官方的实例即可但是之前H5站点中有一个虚拟目录用于客户单点登录认证,所以需要在Nginx中添加对应的虚拟目录,但是单点认证是ASP.Net......
  • 安谋科技“周易”NPU与飞桨完成II级兼容性测试,助力实现多样化AI部署
    近日,安谋科技(中国)有限公司(以下简称“安谋科技”)“周易”NPU系列IP与飞桨已完成II级兼容性测试,测试结果显示,双方兼容性表现良好,整体运行稳定。这是安谋科技加入“硬件生态共创计划”后的阶段性成果。产品兼容性证明本次II级兼容性测试完成了对计算机视觉、智能文本处理、人像分割三......
  • IIS——应用程序池——高级设置——启用32位应用程序 :true
    IIS——应用程序池——高级设置——启用32位应用程序:true打开InternetInformationServices(IIS)管理器。在左侧导航栏中,展开服务器节点并选择“应用程序池”。在中间窗格中,选择要更改的应用程序池。在右侧操作窗格中,点击“高级设置”。在高级设置对话框中,找到“启用32位......
  • js判断字符串为纯ASCII字符串(仅有ASCI字符)
    functionisAscii(str){varpattern=/^[\x00-\x7F]+$/;//ASCII范围的Unicode编码returnpattern.test(str);}varstr1="Hello,_-";console.log(isAscii(str1));//truevarstr2="hello你好";console.log(isAscii(str2));//false......