zoukankan      html  css  js  c++  java
  • 查找1 | Leetcode分类练习 | Datawhale- 打卡(三)

    35. 搜索插入位置

    • 题目

      给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
      你可以假设数组中无重复元素。

    • 代码

      class Solution:
          def searchInsert(self, nums: List[int], target: int) -> int:
              start,end=0,len(nums)
              while start < end:
                  mid = (start+end)//2
                  if nums[mid] < target:
                      start = mid + 1
                  else:
                      end = mid
              return start
      

    202. 快乐数

    • 题目

      编写一个算法来判断一个数 n 是不是快乐数。
      「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为  1,那么这个数就是快乐数。
      如果 n 是快乐数就返回 True ;不是,则返回 False 。

    • 代码

      class Solution:
          def isHappy(self, n: int) -> bool:
              sum_set = set()
              while n != 1:
                  mysum = 0
                  while n >0:
                      mysum += (n%10)**2
                      n = n//10
                  if mysum in sum_set:
                      return False
                  else:
                      sum_set.add(mysum)
                  n = mysum
              return True
      

    205. 同构字符串

    • 题目

      给定两个字符串 s 和 t,判断它们是否是同构的。
      如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
      所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。

    • 代码

      class Solution:
          def isIsomorphic(self, s: str, t: str) -> bool:
              return list(map(s.index,s))==list(map(t.index,t))
      

    242. 有效的字母异位词

    • 题目

      给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

    • 代码

      class Solution:
          def isAnagram(self, s: str, t: str) -> bool:
              from collections import Counter
              s = Counter(s)
              t = Counter(t)
              if s == t:
                  return True
              else:
                  return False
      

    290. 单词规律

    • 题目

      给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
      这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。

    • 代码

      class Solution:
          def wordPattern(self, pattern: str, str: str) -> bool:
              str = str.split()
              return list(map(pattern.index,pattern)) == list(map(str.index,str))
      

    349. 两个数组的交集

    • 题目

      给定两个数组,编写一个函数来计算它们的交集。

    • 代码

      class Solution:
          def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
              return set(nums1) & set(nums2)
      

    350. 两个数组的交集 II

    • 题目

      给定两个数组,编写一个函数来计算它们的交集。
      说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。

    • 代码

      class Solution:
          def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
              from collections import Counter
              nums1_dict = Counter(nums1)
              res = []
              for i in nums2:
                  if nums1_dict[i] > 0:
                      res.append(i)
                      nums1_dict[i] -= 1
              return res  
      

    410. 分割数组的最大值

    • 题目

      给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。

    • 代码

      class Solution:
          def splitArray(self, nums: List[int], m: int) -> int:
              def helper(mid):
                  res = tmp = 0
                  for num in nums:
                      if tmp + num <= mid:
                          tmp += num
                      else:
                          res += 1
                          tmp = num
                  return res + 1
      
              lo, hi = max(nums), sum(nums)
              while lo < hi:
                  mid = (lo + hi) // 2
                  if helper(mid) > m:
                      lo = mid + 1
                  else:
                      hi = mid
              return lo
      

    451. 根据字符出现频率排序

    • 题目

      给定一个字符串,请将字符串里的字符按照出现的频率降序排列。

    • 代码

      class Solution:
          def frequencySort(self, s: str) -> str:
              from collections import Counter
              s_dic = Counter(s)
              s = sorted(s_dic.items(), key=lambda item:item[1], reverse = True)
              res = ''
              for key, value in s:
                  res += key * value   
              return res
      

    540. 有序数组中的单一元素

    • 题目

      给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。

    • 代码

      class Solution:
          def singleNonDuplicate(self, nums: List[int]) -> int:
              left,right = 0,len(nums)-1
              while left < right:
                  mid = (left+right) // 2
                  if nums[mid] == nums[mid^1]:
                      left = mid + 1
                  else:
                      right = mid
              return nums[left]
      

    参考:https://github.com/datawhalechina/team-learning-program/blob/master/LeetCodeClassification/3.查找.md

  • 相关阅读:
    Java控制台五子棋编码学习
    Java Web基础
    JavaScript Unit Test with Mocha
    Cross-browser Testing Tool
    GRIDVIEW 控件
    C# .net ACCESS 网页增删改查 --留言板
    在一般处理文件中访问Session需要添加IRequiresSessionState(转载)
    win7 IIS7 发布网站 出现 "处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误"
    http://www.cnblogs.com/hanshuhe/archive/2012/08/30/vss.html
    win 7 配置 IIS
  • 原文地址:https://www.cnblogs.com/rn-05181226-rw/p/13554188.html
Copyright © 2011-2022 走看看