![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 84
人工智
个人记录博客,不推荐阅读
展开
-
贪心思想草稿
什么是贪心贪心的本质是选择每一阶段的局部最优,从而达到全局最优。这么说有点抽象,来举一个例子:例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿?指定每次拿最大的,最终结果就是拿走最大数额的钱。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。来实践一下:https://leetcode-cn.com/problems/longest-happy-string/ public String longestDiverseString(int a, int b原创 2022-02-17 00:11:42 · 68 阅读 · 0 评论 -
力扣刷题系列总结
第一:暴力法往往是for循环,因为我们做的题目绝大多数都是查找问题。技巧:下一层for循环从哪里开始查找,从哪里开始停止//双层或者多层for循环for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { System.out.println(i+""+j); }第二:双指针技巧:for循环变while,满足题目中的一些条件时候,while里面中条件用判断是否跳出循环一:很典型的是二原创 2022-01-08 18:27:33 · 918 阅读 · 2 评论 -
回溯法(其实是递归)
关于回溯算法,你该了解这些!别看回溯法很难,但回溯法就是暴力解法https://mp.weixin.qq.com/s?__biz=MzUxNjY5NTYxNA==&mid=2247485237&idx=1&sn=1bae4c3d0d3965af44878093a5a49f58&scene=21#wechat_redirect其中博主这段话令我领悟了回溯法的精髓,要懂回溯,首先要明白我们为什么要用回溯?力扣题目链接:https://leetcode-cn.com/prob转载 2021-11-04 23:13:36 · 630 阅读 · 0 评论 -
二分法(三种基本模版)
前言二分查找作为程序员的一项基本技能,是面试官最常使用来考察程序员基本素质的算法之一,也是解决很多查找类题目的常用方法,它可以达到O(log n)的时间复杂度。一般而言,当一个题目出现以下特性时,你就应该立即联想到它可能需要使用二分查找:待查找的数组有序或者部分有序 要求时间复杂度低于O(n),或者直接要求时间复杂度为O(log n)二分查找有很多种变体,使用时需要注意查找条件,判断条件和左右边界的更新方式,三者配合不好就很容易出现死循环或者遗漏区域,本篇中我们将介绍常见的几种查找方式的模板转载 2021-10-20 00:04:49 · 2224 阅读 · 0 评论 -
贪心算法和动态规划
人们认识事物的方法有三种:通过概念(即对事物的基本认识)、通过判断(即对事物的加深认识)、和推理(对事物的深层认识)。其中,推理又包含归纳法和演绎法。(这些从初中高中一直到大学我们都是一直在学习的,关键是理解)归纳法是从特殊到一般,属于发散思维;(如:苏格拉底会死;张三会死;李四会死;王五会死……,他们都是人。所以,人都会死。)演绎法是从一般到特殊,属于汇聚思维。(如:人都会死的;苏格拉底是人。所以,苏格拉底会死。)贪心:贪心法:是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值.原创 2021-09-01 22:27:50 · 243 阅读 · 0 评论 -
矩阵遍历(DFS、BFS、并查集)
有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isConn.原创 2021-07-19 23:36:07 · 1664 阅读 · 3 评论 -
力扣刷题心得(设计类题目)
设计类题目基本考察的是你对现实事物的抽象能力,一般会遇到一些类的设计、字符串切分、集合的使用(list、map、set、stack、deque)等,结束后我会更新一些关于这些集合的常见使用方法和场景。一、设计文件系统你需要设计一个能提供下面两个函数的文件系统:create(path, value):创建一个新的路径,并尽可能将值 value 与路径 path 关联,然后返回True。如果路径已经存在或者路径的父路径不存在,则返回False。get(path):返回与路径关联的值。如果...原创 2021-06-21 22:54:32 · 1381 阅读 · 0 评论 -
算法【一】树
树的分类1、满二叉树所有叶结点同处于最底层(非底层结点均是内部结点),一个深度为k(>=-1)且有2^(k+1) - 1个结点。如图(图来源于veil的博客):2、完全二叉树叶结点只能出现在最底层的两层,且最底层叶结点均处于次底层叶结点的左侧。设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边。3、平衡二叉树平衡二叉树(Self-balancing binary search ...原创 2021-10-12 23:19:30 · 275 阅读 · 0 评论