LintCode打卡
下坠丷
每天都在NULLPointerException
展开
-
LintCode 261 · 最大连通面积 超时但还是想发
class Solution {public: /** * @param matrix: the matrix for calculation. * @return: return the max area after operation at most once. */ int v[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; void BPS(vector<vector<int>> &matr原创 2022-03-15 21:52:30 · 277 阅读 · 0 评论 -
LintCode 278·绘制填充 深度优先搜索 C++
描述你将得到一个二维数组board,以及三个整数x,y,newColor。board[i][j] 代表画板第i行第j列的像素点的颜色,不同的颜色将用不同的整数表示。x与y代表你将要点击画板上第x行第y列的像素点,newColor则代表你将用于“填充”的颜色。你需要直接在原数组board上进行操作,评测程序将检查数组board是否被修改正确。输入:board = [[1, 0, 2], [1, 0, 0], [3, 1, 0]]x = 0y = 1newColor = 5输出:[[1,原创 2022-03-15 19:46:51 · 692 阅读 · 0 评论 -
LintCode 199·判断连接 宽度优先搜索详解 C++/C
给定整数矩阵arr以及整数k,确定是否arr中值为k的所有单元是否都连接在一起。 如果矩阵中的两个单元在水平或垂直方向上相邻且具有相同的值,则视为连接。输入:arr=[[2,2,2,0],[0,0,0,2],[0,1,0,2],[1,1,1,2]]k=2输出:false解释:不是所有的2都相互连接算法分析:这个题目我一开始的思路很直接,找到第一个k值,把他改为k+1,然后遍历他与他相连的所有k值,将其改为k+1。再遍历一遍数组,如果数组中还有k值的话,那就证明原数组中的k不是连通的,反之就原创 2022-03-15 19:24:00 · 942 阅读 · 0 评论 -
LintCode 150·买卖股票的最佳时机II 贪心详解+dp点播 C++/C
给定一个数组 prices 表示一支股票每天的价格.交易次数不限, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购买之前, 你必须先卖掉它).设计一个算法求出最大的利润.输入: [2, 1, 2, 0, 1]输出: 2解释:1. 在第 2 天以 1 的价格买入, 然后在第 3 天以 2 的价格卖出, 利润 12. 在第 4 天以 0 的价格买入, 然后在第 5 天以 1 的价格卖出, 利润 1总利润 2.算法思路遇到后一个价格比前一个价格高的就卖出。可能会担原创 2022-03-14 22:33:25 · 544 阅读 · 0 评论 -
LintCode-149 买卖股票的最佳时机 思路解析(dp+贪心)C++/C
描述假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。样例样例1输入: [3, 2, 3, 1, 2]输出: 1说明:你可以在第三天买入,第四天卖出,利润是 2 - 1 = 1算法思路:创建一个dp数组用于保存每天可以获得的最大收益只能在交易一次,那么每天可以获得的最大收益应该是当天的价格减去前几天最低的价格,然后从dp数组中找到最高的价格。这里有一个小技巧,就是不用每次都从头到尾查找最少的价格,原创 2022-03-14 21:56:19 · 135 阅读 · 0 评论 -
LintCode 433 · 岛屿的个数 C++/C
算法思路宽度优先搜索遍历数组中所有的元素。每次遇到一个岛屿就把他上下左右的值为1的点全部踩一遍,这些点的上下左右为1的点也全部踩一边,因为都是属于同一个岛屿,每踩一个点就将其设置为0,标示其已经踩过,避免重复踩点。这个点上下左右及衍生的所有点踩完之后,岛屿的个数+1;程序整体编写没有什么问题,运行的时候才注意到传入的是个空数组的话需要直接返回0。class Solution {public: /** * @param grid: a boolean 2D matrix原创 2022-03-14 18:03:11 · 772 阅读 · 0 评论 -
LintCode 1054 · 最少费用的爬台阶方法C++/C
这个题一开始理解的有点问题,开辟的数组大小是length,所以写了几次没有写出来。以为到数组的最后一个元素就可以了,其实是最后一个元素也要通过,所以应该开辟的数组大小应该是length+1;简单的写一下转化方程 dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);这个方程是计算要到达第i层需要花费的代价class Solution {public: /** * @param cost: an array * @return: mi原创 2022-03-13 22:54:21 · 78 阅读 · 0 评论 -
LintCode 514·栅栏染色C/C++
514 · 栅栏染色我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。必须保证不存在超过2个相邻的柱子颜色相同,求有多少种染色方案。n和k都是非负整数输入: n=3, k=2输出: 6Explanation:post 1, post 2, post 3way1 0 0 1way2 0 1 0way3 0 1 1way4 1 0 0原创 2022-03-13 20:47:38 · 691 阅读 · 0 评论 -
计算字符串中数字的个数
计算字符串中数字的个数思路:遍历字符串,在0和9之间的字符计数器加1方法类public class Solution { /** * @param str: Arbitrary length string * @return How many numbers are in the string */ public int statistics(String str) { // write your code here int原创 2021-11-09 20:09:13 · 1059 阅读 · 0 评论 -
给一个24小时制的时间(00:00-23:59),其中有一个或多个数字是问号。问号处可以用任何一个数字代替,问可以表示的最大时间是多少。
题目:给一个24小时制的时间(00:00-23:59),其中有一个或多个数字是问号。问号处可以用任何一个数字代替,问可以表示的最大时间是多少。样例1:输入:time = “2?:00”输出:“23:00”样例2:输入:time = “??:??”输出:“23:59”思路:生成一个StringBuilder字符串便于操作import java.io.BufferedReader;import java.io.IOException;import java.io.InputStre原创 2021-11-07 20:30:22 · 905 阅读 · 0 评论 -
给定一个正整数N,你需要统计(1,N]之间所有整数质数分解后,所有质数的总个数。
题目:给定一个正整数N,你需要统计(1,N]之间所有整数质数分解后,所有质数的总个数。eg:输入6得出72=2 3=3 4=22 5=5 6=23 所以1+1+2+1+2=7思路:从2开始,遍历到N求整数质数,除数先取二,直到除不尽的时候除数加1,每次让N等于除的结果,当N的值为1,表示分解完。同时设置计数器记录分解次数,每分解一次加1import java.io.BufferedReader;import java.io.IOException;import java.io.InputS原创 2021-11-06 22:22:32 · 722 阅读 · 0 评论