2023.10.12

高总 2023-10-12 338 10/12

这两天睡太晚了,好多事情没完成,罪过。

第一题

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

代码前:又是一个经典到爆炸的问题,当然有两种思路,一种傻子思路挨个查找输出位置,另一种就是二分查找了,说实话在没有指定时间复杂度的情况下我觉得两种方式所需要的时间开销都差不多,毕竟都没有嵌套,重点可能是在大数据量的时候出现区别,但是实际所见的时间开销几乎多了一半。

代码中:

1)傻子思路的代码:

class Solution(object):
    def search(self, nums, target):
        for i in range(len(nums)):
            if nums[i]==target:
                return i
        return -1

没什么好说的,注意一点,return将会使整个函数退出,和break有区别,break只退出当前循环。

2)GPT优化过的傻子代码:

class Solution(object):
    def search(self, nums, target):
        if target in nums:
            return nums.index(target)
        return -1

胜在没有循环,但是说实话,python内部应该是跑了的,而且这种写法多少有取巧的嫌疑,直接使用索引index函数输出target的位置。

3)GPT优化过的傻子代码2:

class Solution(object):
    def search(self, nums, target):
        for i,num in enumerate(nums):
            if num==target:
                return  i
        return -1

使用了enumerate,胜在能够将遍历过程中的每一个每一个元素创建一个索引值,其实和一开始的方式也差不多,针对那个寻找最长公共前缀的题可能比较好用,在那里详细介绍一下。

4)二分法代码:

 

- THE END -

高总

10月12日19:53

最后修改:2023年10月12日
0

非特殊说明,本博所有文章均为博主原创。