【剑指offer】10:矩形覆盖

题目描述: 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路: ①方法一 对于这种题没有思路怎么办?可以先从最简单的情况开始考虑: 显然,当n = 1时,只有一种方法 当n = 2时,如图有两种方法 当n = ... »

算法很美,听我讲完这些Java经典算法包你爱上她

对于编程来说,只有掌握了算法才是了解了编程的灵魂,算法对于新手来说的话,属实有点难度,以后想有更好的发展,得到更好的进阶,对算法进行系统的学习是重中之重的。小羽今天为大家介绍的是关于 Java 需要了解的一些经典算法,希望对大家能有所帮助 ... »

LeetCode 3. Longest Substring Without Repeating Characters

题目描述 题目链接 思路 假设必须以i位置字符结尾的字符串最大不重复字串的长度是x,那么所有位置x值中最大的值就是答案。 i位置的x的值取决于两个因素。 第一个因素是i-1向左边能扩到最左位置(即:i-1位置上的x值)。 第二个因素是i位置的值上一次出现的位置。 这两个因素取最大值即可算出i位置的x ... »

关于100个人随机给钱的模拟实验

前言 在知乎上看到一个好玩的问题:房间里有100个人,每人都有100元钱,他们在玩一个游戏。每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的? 今天使用java中的GUI来模拟一下。 实现 效果图如下 红色表示负债,模拟次数大概150W次。 代码实现 可视化主类 i ... »

回溯算法

介绍回溯算法,包含回溯算法介绍以及 全排列问题和N皇后问题的解决方案 ... »

动态规划系列之九找零钱

给定不同面额的硬币 `coins` 和一个总金额 `amount`。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 ... »

如何只根据日期计算对应的星期数

一、引子 最近想到一个问题,有些指针式手表除了指示时分秒的三针之外只有一个小的日历口显示当前日期,而对于上班族来讲星期的概念可能更常用,那如何通过这个日期就推测出当天是星期几呢? 这里其实蕴含着三个值,第一个是当前年份,一般而言年份这种周期比较长的很难弄错,所以也不用特别注意;第二个是月份,相对于日 ... »

单链表反转

数据结构第一节就是链表。链表由多个node节点组成,每个node节点包含数据和一个指针。指针指向下一个节点。 组装链表 经常问单链表的算法,那你首先要定下来链表的结构,而不是直接思考算法。为了方便使用,我们固定一个哨兵作为 头节点。数据节点都在头节点之后。 /** * @author Ryan Mi ... »

动态规划-最长公共上升子序列-n^2解法

1. 题目描述 给定两个数列$A, B$,如果他们都包含一段位置不一定连续的数,且数值是严格递增的,那么称这一段数是两个数列的公共上升子序列。求$A$和$B$的最长公共上升子序列。 输入格式 第一行包含一个整数$N$,表示$A$和$B$的长度。 第二行包含$N$个整数,表示数列$A$。 第三行包含$ ... »

The Red Button

The Red Button 问题 问题描述 Piegirl终于发现了红色按钮,你现在还剩最后一个机会去改变这个结局。这个按钮下面的电路由n个从0到n-1编号节点组成。为了关闭这个按钮,这n个节点必须以特定的序列拆解。节点0必须首先拆解,在拆解了节点i后,下一个被拆解的节点必须是(2·i) mod ... »

MIMO OFDM 常用信号检测算法

MIMO OFDM 系统检测算法 1. 前言 MIMO的空分复用技术可以使得系统在系统带宽和发射带宽不变的情况下容易地获得空间分集增益和信道的容量增益。OFDM技术采用多个正交的子载波并行传输数据,使得每一路上的数据速率大大降低,并且加入了时间保护间隔,因此具有较强的抗多径干扰和频率选择性衰落的能力 ... »

MindSpore:基于本地差分隐私的 Bandit 算法

摘要:本文将先简单介绍Bandit 问题和本地差分隐私的相关背景,然后介绍基于本地差分隐私的 Bandit 算法,最后通过一个简单的电影推荐场景来验证 LDP LinUCB 算法。 Bandit问题是强化学习中一类重要的问题,由于它定义简洁且有大量的理论分析,因此被广泛应用于新闻推荐,医学试验等实际 ... »

越来越受欢迎的Vue想学么,90后小姐姐今儿来教你

摘要:Vue的相关技术原理成为了前端岗位面试中的必考知识点,掌握 Vue 对于前端工程师来说更像是一门“必修课”。 本文原作者为尹婷,擅长前端组件库研发和微信机器人。 我们发现, Vue 越来越受欢迎了。 不管是BAT大厂,还是创业公司,Vue都被广泛的应用。对比Angular 和 React,三者 ... »

[DP浅析]线性DP初步 - 2 - 单调队列优化

#0.0 前置知识 本文为单调队列优化dp,请确保你已熟练掌握以下知识: [算法入门]单调队列 发表于 2020-6-24 14:40 Dfkuaid 摘要: 单调队列简单介绍 阅读全文 >> #1.0 简单介绍 #1.1 本质 & 适用范围 运用单调队列优化dp,本质是利用单调性,及时排除不可能的 ... »

算法之冒泡排序法

一.冒泡排序简介 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺大小不同就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,这个过程如下图所示。 二 ... »

LeetCode 134. Gas Station

题目描述 题目链接 思路 暴力解法 O(N^2) 我们可以通过生成辅助数组来验证良好出发点 int[]h 这个数组的长度和cost数组长度一致,且这个数组的每个元素的生成逻辑是: h[i]=gas[i]-cost[i]; h(i) 往后累加,并回到i位置,不出现负数,就是良好出发点 ,这个i位置就是 ... »

LeetCode 239. Sliding Window Maximum

题目描述 题目链接 思路 数组为num, 滑动窗口大小是k,首先两个极端情况: 如果k=1,则直接返回原数组即可(滑动窗口大小为1,那么每个窗口的最小值/最大值就是其本身) 如果k == num.length, 那么返回一个数组大小为1的数组,这个数组里面的唯一的数就是整个数组的最大值 然后讨论普遍 ... »