leetcode

算法

两数求和

【题目】
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

【示例】
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

【程序】

#方法一暴力解决
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        length=len(nums)
        for i in range(length):
            for j in range(i+1,length):#range(start,stop,step)
                if nums[i]+nums[j]==target:
                    return [i,j]
                    
#方法二利用切片
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        length=len(nums)
        for i in range(length):
            y=target-nums[i]
            if y in nums[i+1:]:#利用切片
                return [i,nums.index(y,i+1)]#从i+1开始搜索元素y的索引
                
# 哈希,把target-num放入dic中,循环for如果有num在dic内,
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for i, num in enumerate(nums):
            if num in dic:
                return [dic[num], i]
            else:
                dic[target - num] = i
  1. 切片
    list_name[start:stop:step]
    默认step为1
  2. range
    range(start,stop,step)
    默认start为0
  3. index
    字符串.index(元素,start,stop)
  4. enumerate
    enumerate(列表或元祖或字符串,start=n)
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
list(enumerate(seasons, start=1))       # 小标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

整数反转

【题目】
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

【实例】
输入: 123
输出: 321

输入: -123
输出: -321

输入: 120
输出: 21

【程序】

class Solution:
    def reverse(self, x: int) -> int:
        s=str(abs(x))     
        result=0
        j=1
        for a in s[::-1]:
            result=int(a)*(10**(len(s)-j))+result
            j=j+1
        if x<0:
            result=-result
        else:
            result=result
        if result<(2**31-1) and result>(-(2**31)):
            return result
        else:
            return 0

class Solution:
    def reverse(self, x: int) -> int:
        s=str(abs(x))     
        result=0
        j=1
        for a in s[::-1]:
            result=int(a)*(10**(len(s)-j))+result
            j=j+1
        result=result if x>0 else -result
        result=result if result<(2**31-1) and result>(-(2**31)) else 0
        return result

回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

class Solution:
    def isPalindrome(self, x: int) -> bool:
        s=str(x)
        s2=s[::-1]
        if s==s2:
            return True
        else:
            return False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值