【Python算法】经典算法题型

前言;

        总结了几个经典算法题型,应用题的思路也是换汤不换药

目录:
  • 滑动窗口技术    
  • 二分查找
  • 冒泡排序
  • 递归算法
  • 双指针算法
1.滑动窗口技术

        作用: 解决字符或者数组的相关问题,维护一个固定大小的窗口,通过滑动窗口来处理数据。

        思想:先决定窗口大小,然后定义两个指针,一个指向窗口的起始位置,另一个指向窗口的结束位置(由子数组/子串长度决定),然后不断移动窗口,并读取窗口的内容

  • 分类一:单个字符串判断
    • 题型一:固定的K值
      • 1. 字符串后2个字符组成的子串出现的次数(忽略子串本身)
    • def last2(str):
          # 初始化滑动起始索引
          start_index = 0
          # 初始化滑动结束索引即匹配的结束位置 = 指定长度-1
          end_index = 1
          # 计数器,统计子串出现的次数
          count = 0
          
          
          if str:
              if len(str) == 1:
                  return count
              else:
                  # 结束范围是字符串长度-指定子串长度+1
                  for i in range(0, len(str)-1):  # 控制遍历次数
                      new_str = str[-2]+str[-1]
                      if str[start_index:end_index+1] == new_str:
                          count += 1
                      start_index += 1
                      end_index += 1
                  return (count-1)
          else:
              return count
      
      #输入数据
      str = eval(input())
      #调用函数打印结果
      print(last2(str))
    • 题型二:非固定的K值
      • 1.求超过N的最短子数组
        • def shortest_sublist_exceeds_n(lst, n):
              # 控制窗口的长度
              for i in range(1,len(lst)+1):
                  start_index = 0
                  end_index = i - 1
                  # 根据子数组长度控制遍历次数
                  for j in range(0,len(lst)-i+1):
                      if sum(lst[start_i

你可能感兴趣的:(Python,python)