- 博客(8)
- 资源 (6)
- 收藏
- 关注
原创 旋转图像(二维数组的旋转)——LeetCode数组算法题
旋转图像给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 ...
2018-06-20 23:13:40 2938 1
原创 贪心算法——五大常用算法之一
贪心算法一、基本概念: 在对问题求解时,总是做出在当前看来是最好的选择。不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。所以对所采用的贪心策略一定要仔细分析其是否满足...
2018-06-20 16:34:45 6590
原创 打家劫舍——动态规划(java实现)
打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3...
2018-06-18 16:20:34 4197
原创 动态规划——五大常用算法之一
动态规划1、基本概念:动态规划就是:每走一步,都会根据之前的情况来决定这一步的走向,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。2、基本思想与策略:与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子...
2018-06-18 16:19:50 1538
原创 爬楼梯——动态规划(java)
爬楼梯假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 + 1 步2. 1 步 + 2 步...
2018-06-18 16:09:58 2800
原创 分治算法——五大常用算法之一
分治法首先看一下二分搜索:一串数字,从中间分成两半,再两半……这样查找就是分治思想:把一个问题分解成若干个一样的小块。1、基本概念:把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题。直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。2、分治经典问题1.二分搜索2.大整数乘法3.Strassen矩阵乘法4.棋盘覆盖问题5.合并排序6.快速排序7.线性时间选...
2018-06-18 15:44:05 702
原创 斐波那契数列——递归和递推双解决
斐波那契数列:第n项等于n-1和n-2项之和F(n) = F(n-1)+ F(n-2);解题:关键代码如下递归解决: public static void main(String[] args) { int m = f(18); System.out.println(m); } public static int f(int n) { if (n == ...
2018-06-18 13:52:00 1103
原创 鸡兔同笼(附java代码)——穷举法解题
穷举法:暴力破解,n层for循环。枚举每一种可能。例题:鸡兔同笼:一个笼子有35个头,94只脚,问鸡和兔各有多少?解题:数学方法:设鸡i只,兔j只,方程:i + j = 35 ; 2 * i + 4 * j = 94。解题思路:鸡和兔加起来35只,所以算每一种可能的脚的个数,符合就输出就可以了代码如下: public static void main(String[] args) { j...
2018-06-18 13:25:32 8417 2
ForumSystem.zip
2019-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人