2022-04-22 12:43
清华大学 Java :答案有问题吧,当nums[i-1] = 0; nums[i-2] 等于1或者2时,应该是dp[i] = dp[i-2],少了一个分支啊
0 点赞 评论 收藏
分享
2022-04-22 12:43
清华大学 Java 牛客46540165...://dp[i][j]表示以当前i,j位置为终点的最短路径长度 int[][] dp = new int[n + 1][m + 1]; 应该是 int[][] dp = new int[n][m]; +1 误导了
0 点赞 评论 收藏
分享
2022-04-22 12:33
清华大学 Java zpf_nc:int[][] dp = new int[m + 1][n + 1]应该是int[][] dp = new int[n + 1][m + 1]
0 点赞 评论 收藏
分享
2022-04-22 12:32
清华大学 Java 南大一只牛:回溯的典型题目,之所以没有回溯的步骤是因为在递归函数里用了String变量,该变量每次改变都会产生一个新的变量。如果使用list来保存的话,需要显式回溯步骤。
0 点赞 评论 收藏
分享
愤世猪:“qwertyuio”这个串超时了
0 点赞 评论 收藏
分享
2022-04-22 12:29
清华大学 Java morphy:这个地方很有意思 楼上几个评论认为题解错了,我认为题解没错,先说结论:二者皆可。可自行提交试试,都能通过。两种写法结果集是一样的,只是每一项添加到结果集的时机不同。 这里最后一个条件visit[i-1] 也可以写成!visit[i-1] 1. 写visit[i-1] 比如1 2 2这个数组,会导致在(第二层)第一次遍历到中间的2时,遍历到第二个2时,直接跳过了,不会加入到list,在(第三层)第一次遍历2时,此时中间的2已经标记为false,才会加入到list中,答案是对的 2. 写!visit[i-1] 与上面相反,这样的含义是:因为数组最开始已经被我们排序,所以相等的数字一定挨着,比如两个2,在处理第二层的时候,前面的2肯定先用,后面的2后用,注意这里“用过”的含义不是遍历过,在用后面2的时候,前面2已经置为false,因此这里用!visit[i-1]代表前面已经用过,而不是遍历过
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: