算法
文章平均质量分 94
介绍算法思想
两片空白
这个作者很懒,什么都没留下…
展开
-
贪心思想及其题目,来刷吧
前言 之前觉得贪心思想,根本就总结不出一种规律。虽然这种题思想都是一个,但是,情况太多了。感觉这种题,很难想到。要不就是常识,要不想都想不到。这种题就是要看自己有没有刷过,并且还要能记住。 但是,细细体会。才会让你跟好的理解这种题的解题思路。至少,能让你很好的理解你刷的贪心题目。贪心思想: 局部最优,推导出全局最优。 简单点说就是,每一次都取得最优的结果。最终的结果一定就会得到最优的结果。 比如:有很多钞票,规定次...原创 2021-12-06 15:14:22 · 4361 阅读 · 6 评论 -
八大排序算法
目录前言:一.排序概念二.常见的排序算法2.1 插入排序 2.1.1 直接插入排序 2.1.2 希尔排序2.2 选择排序 2.2.1 直接选择排序2.2.2 堆排序 2.3 交换排序 2.3.1 冒泡排序2.3.2 快速排序2.4归并排序 2.5 计数排序前言: ...原创 2021-10-07 19:40:59 · 1874 阅读 · 4 评论 -
回溯算法及题目
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]原创 2021-09-25 19:28:45 · 1835 阅读 · 0 评论 -
子序列问题(动规)
300. 最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。状态定义: 必须有第i个数(包括第i个)的最长递增子序列,dp[i]。...原创 2021-08-22 19:15:05 · 392 阅读 · 0 评论 -
所有股票问题(动规)
121. 买卖股票的最佳时机给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6..原创 2021-08-06 23:55:22 · 215 阅读 · 0 评论 -
完全背包问题
概念:完全背包问题一般是指:有N件物品和一个能背重量为W的背包,第i件物品的重量为weight[i],价值为value[i]。每件物品有无限个(也就是可以放入背包多次),求怎样可以使背包物品价值总量最大。 完全背包与01背包问题的区别在于01背包物品只有一个,完全背包有无数个。...原创 2021-08-02 11:15:48 · 19348 阅读 · 1 评论 -
对KMP算法小理解
文章目录一.KMP算法1.用途2.next数组建立1.前缀表2.next数组用代码实现3.用KMP算法实现strstr函数一.KMP算法1.用途KMP算法主要用于字符串的匹配问题。例如:第一种办法是暴力解法,依次遍历寻找,在文本串中找到第一次与模式串第一个字符相等的字符后,依次遍历如果文本串中出现与模式串不相等的字符,然后再从文本串的下一个字符再遍历出与模式串相等的字符,再遍历下面的是否与模式串相等,直到全部相等为止。这样看出是非常复杂而且时间复炸度是很高的。第二种办法是KMP算法很好原创 2021-05-20 16:00:34 · 174 阅读 · 0 评论 -
01背包问题(取还是不取呢)
一.理论知识背包问题主要是描述一个限重背包,物品有各自的重量和价值,问被背包能放下最大的价值是多少。 01背包问题于其它背包问题的区别是物品只有一个,后序会讲到,完全背包问题。简单问题描述:有n个物品,每件物品的重量为W[ i ],价值为V[ i ]。现有以容量为M的背包,问如何选取物品放入背包,使背包内的物品价值总量最大。其中每件物品只有一件。 暴力解法:枚举出选取物品的并且物品重量和小于等于背包容量的所有情况,利用回溯算法。因为物品只...原创 2021-07-27 16:08:19 · 1193 阅读 · 1 评论 -
动态规划理论和基础
一.什么是动态规划 动态规划,英文:dynamic programming,简称dp。动态规划是分治思想的延申,通俗一点就是大事化小,小事化无,将大问题化解成小问题的分治过程,通常会用一个一维或者二维数组保存小问题已经处理好的解,并提供给后面处理更大规模的问题时直接使用这些结果。如果某一问题有很多重叠的子问题,并且每一个状态可以由上一个或者多个状态推到出来,可以使用动态规划。 从上面的定义可以看出这与递归的思想很是类似,其实动态规划可以说成是递归的一...原创 2021-07-25 20:39:04 · 672 阅读 · 2 评论