算法题
常见算法Leetcode剑指面试指南
鸡康
这个作者很懒,什么都没留下…
展开
-
全排列问题leetcode46
【代码】全排列问题leetcode46。原创 2023-12-10 21:33:25 · 119 阅读 · 0 评论 -
n皇后问题
https://www.bilibili.com/video/BV18X4y1k74c?p=52原创 2023-12-10 21:07:10 · 149 阅读 · 0 评论 -
三着色问题
【代码】三着色问题。原创 2023-12-10 16:25:52 · 154 阅读 · 0 评论 -
求二叉树叶子结点的个数
【代码】求二叉树叶子结点的个数。原创 2023-12-10 11:38:53 · 87 阅读 · 0 评论 -
矩阵的乘法
【代码】矩阵的乘法。原创 2023-12-10 11:33:49 · 50 阅读 · 0 评论 -
判断两棵二叉树是否相同(leetcode100题)
【代码】判断两棵二叉树是否相同(leetcode100题)原创 2023-12-10 10:27:15 · 61 阅读 · 0 评论 -
整数幂(c语言)
【代码】整数幂(c语言)原创 2023-12-09 21:16:29 · 385 阅读 · 0 评论 -
机器人到达指定位置的方法数《程序员代码面试指南(第2版)》
题目假设有排成一行的N个位置,记为1~N,N一定大于等于2.开始时机器人在其中的M位置上,机器人可以往左走,也可以往右走,如果机器人来到1位置,那么下一步只能往右来到2位置;如果机器人来到N位置,那么下一步只能往左来到N-1位置,规定机器人必须走K步,最终能来到P位置的方法有多少种?暴力递归思路:如果当前来到cur位置,还剩rest步要走,那么下一步该怎么走呢?如果当前cur=1,下一步只能走到2,后续还剩rest-1步;如果当前cur=N,下一步只能走到N-1,后续还剩rest-1步;如果cur是原创 2021-10-11 10:07:49 · 357 阅读 · 0 评论 -
龙与地下城游戏问题
思路来源:讨论区第一条评论这题使用动态规划的方法来解。我们以示例为例来解释。1.假设矩阵只有一个值,也就是右下角的-5,那么骑士需要6点血。2.对于最下面一行来说,只能往右走,所以可以求出进入每一格需要的血量。在30这里,设需要的血量为x,进入下一格需要6点血,那么应该有x + 30 >=6, x >= -24, 算出来x小于0,说明这个格子是加血的,并且加的血足够,x = 1就可以了。那么最下面一行依次就是,{1,1,6}。同理最右边一列是{2,5,6}。3.接下看递推公式,用hp原创 2021-10-18 10:13:48 · 1261 阅读 · 0 评论 -
《程序员代码面试指南》最小编辑代价&&leetcode72编辑距离
思路源自:力扣题解首先我们先初始化dp[0][0],物理意义是字符串“ ”变成字符串“ ”需要进行代价为0的转换初始化第一行,物理意义:空字符串变成a的添加操作代价,空字符串变成ap的添加操作代价…空字符串变成apple的添加操作代价初始化第一列,物理意义:字符串o变成空字符串的删除操作代价,字符串op变成空字符串的删除操作代价…字符串Oppa变成空字符串的删除操作代价分两种情况:word1[i-1]和word2[j-1]相等或者不相等。先讨论不相等的情况:如上图的红色框、黑色框、蓝色框和黄色框原创 2021-10-15 13:55:55 · 227 阅读 · 2 评论 -
最长公共子序列、最长公共子串
1.最长公共子序列class Solution { public int longestCommonSubsequence(String str1, String str2) { if(str1.length()==0||str2.length()==0) return 0; int rows=str1.length(); int colomns=str2.length(); int[][] dp=new原创 2021-10-14 09:39:27 · 231 阅读 · 0 评论 -
用递归函数逆序一个栈
//获取栈底元素并将其移除public static int getAndRemoveLastElement(Stack<Integer> stack){ int result=stack.pop(); if(stack.isEmpty()){ return result; }else{ int last=getAndRemoveLastElement(stack); stack.push(result); return last; }}//反转栈顺序public原创 2021-09-10 17:30:27 · 87 阅读 · 0 评论 -
最大振幅计算
题目描述在监控与BI报表系统中,我们经常会采集数据指标进行分析,这里的数据往往都是时序数据,对于时序数据,我们可以用一个数组来表示,例如数组下标表示时间顺序,数组的值表示采集的指标数据大小。现在作为分析师的你,得到如下一个任务:在给定一个整数形式的时序数据,求出这个时序里最大的振幅(“落差”)(振幅 = 时序里相邻的“波峰”与“波谷”相差绝对值)输入描述一个数组,下标代表x轴的时间顺序,数组里的每个数值代表y轴的具体值输出描述整个曲线的相邻波峰与波谷的最大振幅落差样例输入1,2,3,8,5,3原创 2021-08-22 21:21:09 · 1656 阅读 · 0 评论 -
多线程打印奇偶数Leetcode1114
待定原创 2021-08-22 21:18:27 · 78 阅读 · 0 评论 -
LRU(最近最少使用)缓存算法LeetCode146
文章总结的思路参考(图我也是白嫖的)https://www.bilibili.com/video/BV1hp4y1x7MH要求在O(1)的时间复杂度完成get操作,我们想到的数据结构是Map。但是,put操作是需要记录下来哪个是(最近最少使用)需要被删除更新的键,Map做不到。插入和删除的操作时间复杂度都是O(1)的,我们自然想到的数据结构就是链表。但是问题就出现在查找的操作了,链表的查找时间复杂度是O(n)。总结一下就是查找用Map,插入用双向链表。AC代码public class LR原创 2021-08-14 15:10:01 · 140 阅读 · 0 评论