首页 > 编程语言 >代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

时间:2024-06-05 20:58:56浏览次数:24  
标签:index 27 return target nums res 随想录 mid 移除

题目链接:https://leetcode.cn/problems/binary-search/

描述:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1


示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

思路:

1、因为确定是升序排序了,所以从中间找,如果等于直接返回,小于就在前半段找,大于在后半段找。

 

错误的地方:

一开始写了调用的时候没有返回结果,输出null,确定是重复调用的时候应该返回每次的结果

class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        mid_index = int(len(nums)/2)
        if mid_index == 0:
            if target == nums[0]:
                return 0
            else:
                return -1
        if target == nums[mid_index]:
            return mid_index
        elif target< nums[mid_index]:
            self.search(target=target, nums=nums[0:mid_index])
           
        else :
            self.search(target=target, nums=nums[mid_index:])
            
           

  修改返回加了return之后还是没有全部正确,因为我返回的是当前数组的序号,不是原来数组的序号,所以我在后面加了len

  但是如果-1的时候,是不需要加len的,表示找不到,直接返回就可以了,最后修改成这样啦,哈哈哈

class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        mid_index = int(len(nums)/2)
        if mid_index == 0:
            if target == nums[0]:
                return 0
            else:
                return -1
        if target == nums[mid_index]:
            return mid_index
        elif target< nums[mid_index]:
            res = self.search(target=target, nums=nums[0:mid_index])
            if res == -1:
                return -1
            else:
                res += len(nums[0:mid_index])
                return res
        else :
            res = self.search(target=target, nums=nums[mid_index:])
            if res == -1:
                return -1
            else:
                res +=  len(nums[mid_index:])
                return res

  第一天打开结束~~

 

标签:index,27,return,target,nums,res,随想录,mid,移除
From: https://www.cnblogs.com/GuoguoL/p/18233759

相关文章

  • 代码随想录算法训练营 第一天 704 二分查找 27 移除元素
    leetcode704 二分查找704二分查找思想:二分法简单二分问题注意二分问题有很多模式,二分问题查找核心是区间问题注意所学两种写法:区间左闭右开  区间左闭右闭二分查找问题 classSolution{publicintsearch(int[]nums,inttarget){if(target>nu......
  • 灵动微电子 MM32F5277 boot分区实现之Flash驱动移植(二)
    前言    上篇文章,我们移植了nr_micro_shell串口shell组件到MM32F5277上,在此基础上,我们继续移植NorFlash和EmbddedFlash的驱动,并编写串口命令进行测试!NorFlash驱动移植    我们先到灵动微的官网下载官方的SDK,贴个官网链接:灵动微电子SDK下载https://mind......
  • 代码随想录算法训练营第五天 | 哈希表基础、有效字母异位、两个数组交集、快乐数
    哈希表基础理论https://programmercarl.com/哈希表理论基础.html#哈希表242有效字母异位词题https://leetcode.cn/problems/valid-anagram/description/242代码随想录解析https://programmercarl.com/0242.有效的字母异位词.html#算法公开课349两个数组的交集https://leetc......
  • 代码随想录算法训练营第二十七天 | 39.组合总和
    39.组合总和题目链接文章讲解视频讲解classSolution{private:vector<int>combine;vector<vector<int>>result;intcount=0;public:vector<vector<int>>combinationSum(vector<int>&candidates,inttarget){......
  • 2024.5.27(周一)
    function[section]=JinTuiFa(fx,x0,h0,t)%%%输入目标函数x,初始点x0,初始步长h0和加停系数t:%%%采用进退法确定搜索区间ra,bl;输出搜索区间f=inline(fx);h=h0;a=x0;k=0;%k是计数器,同时也做指示器:如果第1次目标函数就没有下降,将%作为反白搜索的指示标记:......
  • (免费领源码)Java/Mysql数据库+04827基于PHP的高校二手物品交易系统的设计与实现,计算机
    本科生毕业论文(设计) 题   目PHP高校二手物品交易系统学   院       XXXXX     专业班级   XXXXX学生姓名       XXXX    指导教师            XXXX          撰写日期:2022年5月10日目 录摘......
  • 6.4数组--移除元素
    26.删除有序数组中的重复项题意描述:给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确......
  • 代码随想录训练营第28天 | 93.复原IP地址、78.子集 、90.子集II
    93.复原IP地址本期本来是很有难度的,不过大家做完分割回文串之后,本题就容易很多了题目链接/文章讲解:https://programmercarl.com/0093.复原IP地址.html视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/和分割字符串类似,还有判断当前数字是否符合要求functionisValid......
  • 代码随想录算法训练营第四天 |节点交换、删除倒数n个节点、交叉链表、环形链表
    24题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/description/24题代码随想录讲解:https://programmercarl.com/0024.两两交换链表中的节点.html#思路19题链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/19题代码随想录:https://programmerca......
  • 代码随想录算法训练营day14(二叉树)
    代码随想录算法训练营day14(二叉树):学习内容:今天学习二叉树。二叉树节点标准写法(当前节点值,左右子节点,有点像链表节点的定义):structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(intx):val(x),left(NULL),right(NULL){}};二......