LeetCode刷刷题(一)

进来工作不是很饱和,有空去LeetCode上刷刷题,随手记录一下

两数之和

题目描述:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
比如:

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

答案如下:

class solution():
    def twosum(self,nums,target):
        length = len(nums)
        print(length)
        i = 0
        while i < length:
            other = target - nums[i]
            for j in range(i + 1, length):
                if other == nums[j]:
                    return (i, j)
            i += 1
if __name__=='__main__':
    s=solution()
    a,b=s.twosum([3,5,4,8],7)
    print(a,b)    ----0,2

反转整数

题目描述:
给定一个 32 位有符号整数,将整数中的数字进行反转。
比如:

输入: 123 -123 120
输出: 321 -321 21

这边有个坑, 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1],有些数虽然一开始在区间内,但是一反转之后超出范围,对于这些超出范围的数,也返回0

答案如下:

class solution():
    def reverseint(self,x):
        if x <= -(2 ** 31) or x >= 2 ** 31 or x == 0:
            return 0
        else:
            num = str(x)
            if num[0] == '-':
                num = "-" + num[::-1][:-1]
                i = 0
                while i < len(num):
                    if num[1] == 0:
                        num = num[0] + num[2:]
                    else:
                        break
                    i += 1
                if int(num) <= -(2 ** 31):
                    return 0
                else:
                    return int(num)
            else:
                num = num[::-1]
                i = 0
                while i < len(num):
                    if num[0] == '0':
                        num = num[1:]
                    else:
                        break
                    i += 1
                if int(num) >= 2 ** 31:
                    return 0
                else:
                    return int(num)
if __name__=='__main__':
    s=solution()
    a = s.reverseint(1534236469)
    print(a)    ---- 0

回文数

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

输入: 121 -121
输出: true false

简单一点可以转换为str之后,利用步进切片,判断是否一致,有点类似上个题目。
这边要求不转换为str
答案如下:

class solution():
    def isPalindrome(self,x):
        # x=str(x)
        # return x == x[::-1]

        pre=x
        back=0
        while pre >0:
            back = back*10 + pre %10
            pre = pre // 10
        return back == x

if __name__=='__main__':
    s=solution()
    a=s.isPalindrome(124421)
    print(a)   ---True

移除元素

题目描述:
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在
原地修改输入数组**并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

给定 nums = [0,1,2,2,3,0,4,2], val = 2,
函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
注意这五个元素可为任意顺序。

答案如下:

class Solution():
    def removeElement(self,nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
        i=0
        while i < len(nums):
            if nums[i] == val:
                del(nums[i])
                continue
            i+=1
        print (nums)

if __name__=='__main__':
    s=Solution()
    nums=[1,2,3,4,5,1,3,7,4,3,2]
    val=2
    s.removeElement(nums,val)   ---- [1, 3, 4, 5, 1, 3, 7, 4, 3]

删除排序数组中的重复项

个人觉得这个就是上一个的升级版

题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

答案如下:

class solution():
    def removeduplicate(self,A):
        i=0
        while i < len(A)-1:
            if A[i] == A[i+1]:
                del(A[i])
                continue
            i+=1
        return A

if __name__=='__main__':
    s=solution()
    nums = [0,0,1,1,1,2,2,3,3,4]
    a=s.removeduplicate(nums)
    print(a)

暂时就写这么多,后面继续刷,继续写。
更多答案,请参考 Github ,欢迎批评指正,交流学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 相对于加班得到的收获,我更在乎生命的意义。 我加过班,那种没日没夜的状态,周一到周六,每天9点半到公司,凌晨1点下...
    花腔书生阅读 249评论 0 1
  • 水乡乌镇润人文, 喧嚣西塘挤游人, 中秋泛舟西湖上, 穿越古今演宋城。
    万事可乐阅读 182评论 0 0
  • 前几天看到了一个问题,你什么时候想要好好学习了?当时真心带着嘲讽,我的大脑告诉我了一句话:当初知道了高考分数要报...
    以为寄己是小仙女阅读 533评论 0 1
  • 大三上学期的考试成绩出来了,结果还不错,考了第四,还以为会考第一呢,呵呵,做梦。 终于找到了大学考试的学习方法,摸...
    9949969a81e2阅读 203评论 0 0
  • 1.函数的基本操作 函数:表示的生活中的一种行为 行为操作:操作过程中可能需要消耗资源,可能需要汇报结果 行为:每...
    沫明阅读 222评论 0 0