分类目录归档:算法

算法刷题-心得


刷题第一阶段:我智商有问题, 第二阶段:我简历有问题,第三阶段:500道题后对技术面试信心建立了,第四阶段:开始注意行为面试问题,第五阶段:offer开始来了,第六阶段: 你开始选择公司了,第六阶段:刷题不要停,因为你随时会被解雇。

Read more

空瓶子-算法


import sys


def drink_soda(n):
    if n == 0:
        exit(0)

    total_drinks = 0
    empty_bottles = n

    while empty_bottles >= 3:
        drinks = empty_bottles // 3
        total_drinks += drinks
        empty_bottles = empty_bottles % 3 + drinks
    if empty_bottles == 2:
        tot...

Read more

搜索-算法


搜索算法是用于在给定数据集中查找目标元素或满足特定条件的元素的算法。常见的搜索算法有以下几种:

  1. 顺序搜索(Sequential Search):逐个遍历数据集,依次比较每个元素与目标元素是否匹配,时间复杂度为O(n)。

  2. 二分搜索(Binary Search):针对有序数据集,在每次比较中将数据集一分为二,通过比较中间元素与目标元素的大小关系确定下一步搜索的方向,时间复杂度为O(log n)。

  3. 插值搜索(Interpolation Search):针对有序数据集,根据目标元素与数据集的最大值和最小值之间的比例来估计目标元素的位置,从而优化搜索效率,时间复杂度取决于数据分布情况,...

Read more

接雨水-题目-算法


"接雨水"问题是一个经典的算法问题,通常也称为Trapping Rain Water。这个问题描述如下:给定n个非负整数表示一系列宽度为1的墙,计算这些墙围成的容器能够容纳多少水。

解决这个问题的常见算法是利用双指针或者栈来进行处理。以下是一种基于双指针的解法:

  1. 使用两个指针left和right分别指向数组的两端。
  2. 初始化变量leftMax和rightMax为0,用来表示左侧和右侧的最大高度。
  3. 当left <= right时,进行循环:
  4. 如果height[left] < height[right],则判断当前height[left]是否小于等于leftMax,如果是,则可以...

Read more