LeetCode简单题day1

1.两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

solution:

基本思路是:两个循环,第一遍从i=0下标开始,第二遍从i+1开始

class Solution:
    def twoSum(self,nums, target):
        for i in range(len(nums)):
            for j in range(i+1,len(nums)):###这样做降低时间复杂度
                if(nums[i]+nums[j]==target):
                    return i,j;

7.反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0

思路:进行分类,首先是为0时设为0 ,二是判断小于0还是大于0,这里要设置flag,三是当末尾为0时,先对其整除,然后就是利用取模对整数进行反转。

class Solution:
    # -*- coding: utf-8 -*-
    # -*- coding: utf-8 -*-
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if(x==0):
            return 0
        out = 0;
        flag = 1;
        if(x<0):
            flag = -1
            x*=-1;
        while(x%10==0):
            x//=10;
        while(x>0):
            out = (out*10)+(x%10)
            x//=10
        if(out*flag>math.pow(2,31)-1 or out*flag<math.pow(2,31)*-1):
            return 0
        return out*flag

 

9. 回文数

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

示例 1:

输入: 121
输出: true

示例 2:

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

示例 3:

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

思路:

将int类型转为str,再转为list,利用list的reverse()将字符串反转,再将反转后的字符串转为int,与原int对比,相等则为true,同样的要分类考虑。

class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x<0:
            return 0==1
        if x%10 ==0 and x !=0:
            return 0==1
        b = list(str(x))
        b.reverse()
        new_x = int(''.join(b))
        if x==new_x:
            return x==new_x
        else:
            return 0==1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值