剑指offer(第2版)

4/75

03.找出数组中重复的数字

03

try1: 遍历 超时 O(n^2)

class Solution:
    def findRepeatNumber(self, nums: List[int]) -> int:
        for i in range(len(nums)-1):
            for j in range(i+1,len(nums)): # 第一次写忘记+1了
                if nums[i] == nums[j]:
                    return nums[I]

try2: 字典 O(2n)

class Solution:
    def findRepeatNumber(self, nums: List[int]) -> int:
        dic = {}
        for i in range(len(nums)):
            if nums[i] not in dic:
                dic[nums[i]] = 1
            else:  # 下面多余
                dic[nums[i]] += 1
        for i in dic.keys():
            if dic[i] > 1:
                return i # 第一次写错为了return dic[I]

try3:改进字典 O(n)

class Solution:
    def findRepeatNumber(self, nums: List[int]) -> int:
        dic = {}
        for i in range(len(nums)):
            if nums[i] not in dic:
                dic[nums[i]] = 1
            else:
                return nums[I]
            

04.在二维数组中查找其是否包含指定元素

image.png

题解:将矩阵旋转45度,会发现每个元素的左边元素小于它,而右边元素大于它


image.png

05. 替换空格

image.png

try1: 利用字符串相关的函数


image.png

题解:不用自带函数的解法 遍历


image.png

06.打印链表

image.png

try1: 利用数组的索引进行插入


image.png

try2: 递归 利用python特性,把当前head.val加在前部,直到head不存在,即 head=None为结束标志


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • leetcode 链接[https://leetcode-cn.com/problemset/lcof/] 3、数...
    漫彻思特阅读 332评论 0 0
  • 不要使用暴力的方法,可以学学讨论里的技巧 二维数组中的查找 题目:在一个二维数组中(每个一维数组的长度相同),每一...
    大大大大大大大熊阅读 2,577评论 0 1
  • 3-1.数组中重复的数字 思路分析:如果不考虑时间复杂度,则可以先对数组排序(需要 的时间),然后再从中找重复的...
    oneoverzero阅读 409评论 0 1
  • 剑指Offer系列 [TOC] 数组和字符串 剑指offer 04.二维数组中的查找 从左下角开始查找,二分思想。...
    SwiftGo阅读 444评论 0 1
  • 统计一个数字在排序数组中出现的次数 输入: nums = [5,7,7,8,8,10], target = 8输出...
    绪安阅读 201评论 0 0