算法
文章平均质量分 61
Peas.
一个追求优质代码的编程爱好者
展开
-
回溯思想与数独问题解决
一、回溯思想 回溯算法是为了解决按照特定路线穷举的问题。比如说自动寻路、走迷宫、数独等需要列举所有结果并选择能够完成任务的路线的问题。 二、回溯算法解题框架 public void backTrace(int i){ if(i > x) return; // 终止条件 // 做选择 doSelect(); // 进入下一层 backTrace(i + 1); // 撤销选择 cancelSelect(); } 三、解决问题 3.1 简单数独问题 假定给定只有一排的棋盘,里面有几个原创 2021-07-15 10:12:56 · 250 阅读 · 2 评论 -
《动态规划》买股票的最佳时机
记录一道非常有趣的动态规划问题 一、题目位置 https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 二、解法 1. 暴力解法 public int maxProfit(int[] prices) { if(prices == null) return 0; // 状态:利润 // 选择:购股日期 // dp(n)定义:输入一个数字n代表.原创 2021-03-24 13:52:54 · 82 阅读 · 0 评论 -
动态规划解题套路框架
学习算法不在一招一式,而是培养框架思维。 所谓框架思维,就是套路。不管增删改查,这些代码都是永远无法脱离的结构,你可以把这个结构化作大纲,根据具体问题在框架上添加代码就行了。 一、认识数据结构 数据结构是工具,算法是通过合适的数据结构解决待定为你的方法。 1.1 数据结构存储方式 数据结构的底层存储方式有两种: 数组(顺序存储) 链表(链式存储) 1.2 数据结构种类 链表 数组 散列表 树 图 队列 栈 堆 1.3 数据结构的基本操作 数据结构的操作无非:增删改查 1.4 数据结构遍历 +.原创 2021-03-14 20:20:45 · 164 阅读 · 0 评论 -
复杂度、二分法、标记法
我们进行编程,无非就是对数据的操作打交道。数据结构与算法就是为了在设计程序的时候更省时、更省内存的处理数据。 一、复杂度 我们怎么才能决定哪个程序设计的更省时、省位置? 如果仅仅通过程序开始到结束运行时间的差额和内存使用情况来计算会出现以下几个问题。 硬件依赖:当同一个程序运行在不同配置的电脑电脑时运行的时间可能不同。 测试结果需要事后才能计算:一般情况下,我们的程序希望在伪码阶段就能够预测程序的性能。 测试结果受原始数据特性影响大:举个例子,在1~100中查找一个数组,如果按照暴力的解法,而恰恰需要.原创 2021-02-02 13:22:00 · 625 阅读 · 0 评论