
算法
文章平均质量分 58
chugyoyo
微信公众号:源码启示录
展开
-
关于单调栈问题的本质的思考
关于单调栈的本质的思考原创 2025-02-24 21:19:51 · 245 阅读 · 0 评论 -
订单折扣金额分摊算法|代金券分摊|收银系统|积分分摊|分摊|精度问题|按比例分配|钱分摊|钱分配
一个金额分摊的算法,将折扣分摊按比例(细单实收在总体的占比)到各个细单中。此算法需要达到以下要求:折扣金额接近细单总额,甚至折扣金额等于细单金额,某些时候甚至超过细单总额,要保证实收不为负数。复杂度O(n)写这个算法的初衷,就是因为现在网上的分摊算法,都没有考虑到最后一项不够减、只循环一次、折扣金额接近总额…原创 2024-07-03 17:50:26 · 997 阅读 · 2 评论 -
谈谈跳台阶算法的记忆法和编程理念|青蛙跳台阶|递归|动态规划|算法|程序员面试|Java
为什么会写这篇文章?因为鄙人刷过此题多次,每次觉得自己会了,可下次还是不能一下子写出题解,故记录下我是如何记忆此题的,并且探索一些编程理念。原创 2024-06-20 11:55:54 · 476 阅读 · 0 评论 -
java数组ArrayList迭代修改的ConcurrentModificationException错误
java数组集合进行迭代修改时,不用迭代器内部方法容易报错!原创 2024-06-13 22:12:01 · 315 阅读 · 0 评论 -
2022阿里巴巴全球数学竞赛 第4题 虎虎生威(盲盒问题、集卡问题)解决思路
盲盒问题、集卡问题,来自 2022阿里巴巴全球数学竞赛 第4题(单选题),参考了哔哩哔哩阿里达摩院的解题思路,加上自己的通俗理解。原创 2022-07-01 23:35:43 · 6969 阅读 · 3 评论 -
n步问题求解算法:斐波那契拓展|青蛙跳台阶拓展|三步问题拓展|多步问题拓展|高精度|大整数支持|自顶向下分析|自底向上求解
问题分析(自顶向下)首先看斐波那契数列,我们先自顶向下分析,f(n)其实是f(n-1)和f(n-2)的和,我们如果画成树,就会发现底层叶子节点都是 f(0)=0 和 f(1)=1。我们再看经典的青蛙问题,每次跳1~2步,跳一步的情况+跳两步的情况,f(n)=f(n-1)+f(n-2),其实本质也是斐波那契数列。(初始值及其含义不一样)最后看三步问题,每次跳1~3步,跳一步的情况+跳两步的情况+跳三步的情况,f(n)=f(n-1)+f(n-2)+f(n-3),很像斐波那契数列。(初始值及其含义不一样)原创 2021-06-24 18:56:54 · 386 阅读 · 0 评论 -
那些经典且常用的算法套路
链表的构建可能你有很多种方案,以下这个是我个人总结出的比较好用的方案。ListNode head = null, node = null;while (condition) { // 这里准备一个新的节点值 val if (node == null) { head = new ListNode(val); node = head; } else { node.next = new ListNode(val); node原创 2021-05-08 15:11:32 · 260 阅读 · 0 评论 -
那些奇妙的算法题
因子的个数例题:(LeetCode 172)给定一个整数 n,返回 n! 结果尾数中零的数量。这道题可以转化为:(因为5乘以偶数会得到10,而偶数很多)给定一个整数 n,返回 n 中 5 的因子数而找到因子5的个数,可以参考找因子2或者10的个数的方法题解:public int trailingZeroes(int n) { int count = 0; while (n > 0){ count += n / 5; n /=原创 2021-05-07 14:55:37 · 185 阅读 · 0 评论 -
算法优化方案(刷题总结)
IO方面:一个典型的算法题,一般会有一个输入输出模板,例如以下这道题:输入:输入第一行包含一个正整数 T,表示需要检验的用户名数量。接下来有 T 行,每行一个字符串 s,表示输入的用户名。输出:对于每一个输入的用户名 s,请输出一行,表示符不符合用户名的规定格式。我之前用的代码:import java.util.Scanner;public class Solution { public static boolean fit(String name) { //验证用户名格式原创 2021-04-24 18:00:13 · 832 阅读 · 0 评论 -
维吉尼亚密码简介和C/C++语言实现
简介维吉尼亚密码是古典密码的一种,从凯撒密码演变而来,用多个凯撒密码组成,是多表密码的简单实现。凯撒密码维吉尼亚密码特点引进了密钥,是一种二维加密加密流程将A-Z的26个字母(不区分大小写)进行0~26编号,从第一位开始,每一位:密文=【密钥+明文】mod26。(密钥可循环)解密流程跟加密流程逆着来,每一位:明文=【密文-密钥】mod26。(最后取正)代码#include"iostream"using namespace std;#define MINCHAR 97#原创 2020-10-14 14:38:37 · 5274 阅读 · 1 评论 -
多道批处理的两级调度模拟(Java/Swing/附源码/附可执行程序)
设计要求题目多道批处理系统的两级调度要求概况本课程设计要求模拟实现一个的多道批处理系统的两级调度。通过具体的作业调度、进程调度、内存分配等功能的实现,加深对多道批处理系统的两级调度模型和实现过程的理解。具体要求作业从进入系统到最后完成,要经历两级调度:作业调度和进程调度。作业调度是高级调度,它的主要功能是根据一定的算法,从输入井中选中若干个作业,分配必要的资源,如主存、外设等,为它们建立初始状态为就绪的作业进程。进程调度是低级调度,它的主要功能是根据一定的算法将CPU分派给就绪队列中的一个进程。原创 2020-07-11 17:17:35 · 3776 阅读 · 6 评论