• LeetCode 1. two sum


    群里有人发起一起刷 LeetCode, 那我也来刷刷题,看能刷几道。第一道都不简单啊,对于我来说。

    two sum

    看了一眼觉得很简单,双向同时开始查,不就好了么。然而……

    1
    class Solution:
        def twoSum(self, nums, target):
            """
            :type nums: List[int]
            :type target: int
            :rtype: List[int]
            """
            for i in nums:
                for j in nums[::-1]:
                    if i+j == target:
                        return [nums.index(i),nums.index(j)]
    
    
    nums = [2, 7, 11, 15]
    target = 9
    print(Solution().twoSum(nums,target))
    
    • 反向列表 [::-1], 步长-1
    • list.index(obj) 从列表中找出某个值第一个匹配项的索引位置

    error:

    Input:
    [3,2,4]
    6
    Output:
    [0,0]
    Expected:
    [1,2]
    

    输出[0,0],预期应该是[1,2],内层循环到头了,取到第一个3。所以应该循环到外层键的左侧。

    2
    for r,i in zip(range(len(nums)),nums):
                for j in nums[:r:-1]:
                    if i+j == target:
                        return [nums.index(i),nums.index(j)]
    

    由于我不知道怎么能循环值的时候循环出索引0,1,2之类的,所以用了range zip生成。

    error:

    Input:
    [3,3]
    6
    Output:
    [0,0]
    Expected:
    [0,1]
    

    因为我用index()取位置的缘故。好好的取索引吧!

    3
    for k,v in enumerate(nums):
                for k2,v2 in enumerate(nums):
                    if k2<=k:
                        continue
                    if v+v2 == target:
                        return [k,k2]
    

    英文版的AC了,但是中文的有超时

    [0,2,4,6,...,25194,25196]
    16021
    

    注:这个列表太大,60k,我放到文件里
    测试数据

    放本地跑是可以出结果的

    [8010, 8011]
    

    再想一想,优化一下,自己菜的抠脚不能小瞧每一道题啊,记得别的OJ平台第一个都是hello world级别,两数相加。

    4
    for k,v in enumerate(nums):
                other_num = target-v
                if other_num in nums:   
                    t_k = nums.index(other_num)
                    if k!=t_k:
                        return [k,t_k]
    

    这次用的思路是,看另外一个值在不在列表里,在的话找索引与当前索引比对,相同就继续找,不同就找出来了。 bingo!

    总结: Python 刚学,好多语法糖都不会用。算法也没有研究。感觉不到10题我就会举白旗。

  • 相关阅读:
    Aspect Oriented Programming
    jsp01
    监听器
    Java编写验证码
    servlet07
    MySQL02
    MySQL01
    Java的jdk1.6与jre1.8中存在的差异
    登陆验证和二级联动
    ajax和json
  • 原文地址:https://www.cnblogs.com/warcraft/p/9344674.html
Copyright © 2020-2023  润新知