• 算法练习之存在重复元素


    算法题目:

    以下来源:https://leetcode-cn.com/problems/contains-duplicate-ii

    给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。

    示例 1:

    输入: nums = [1,2,3,1], k = 3
    输出: true
    示例 2:

    输入: nums = [1,0,1,1], k = 1
    输出: true
    示例 3:

    输入: nums = [1,2,3,1,2,3], k = 2
    输出: false

    python3代码:

    class Solution:
        def containsNearbyDuplicate(self, nums, k):
            #先判断是否存在重复元素
            nums_len=len(nums)
            set_len=len(set(nums))
            if set_len == nums_len:
                return False
            elif set_len < nums_len:
                for i in range(nums_len):
                    for j in  range(i+1,nums_len):
                    # for j in  range(nums_len-i):
                        if nums[i] == nums[j]:
                            if abs(i-j)<=k:
                                # print(i ,j)
                                return True
                return False
    

    总结思路及知识点

    1.   2 层for 循环   确定for 的起始值

    for i in range(nums_len):
    for j in range(i+1,nums_len):

    2. 什么情况下返回False

    3.代码覆盖更多的测试用例  如数组长度为0 和为1 的情况   [ ] [1]

    4.set tuple  列表  字典  字符串  数字 这个几种数据结构常用的方法要掌握 

  • 相关阅读:
    进度条
    html5 表单新增事件
    html5 表单的新增type属性
    html5 表单的新增元素
    html5 语义化标签
    jq 手风琴案例
    codeforces 702D D. Road to Post Office(数学)
    codeforces 702C C. Cellular Network(水题)
    codeforces 702B B. Powers of Two(水题)
    codeforces 702A A. Maximum Increase(水题)
  • 原文地址:https://www.cnblogs.com/eosclover/p/11407663.html
Copyright © 2020-2023  润新知