📣 独立日限时特惠: VIP通行证立减$68
查看: 3372| 回复: 7
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] triangle 编译不能通过

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
实在不知道哪的问题,而且它报错的行数不对:
  1. public class Solution {
  2.     public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) {
  3.         if(triangle == null || triangle.size() == 0){
  4.             return 0;
  5.         }
  6.         if(triangle.size() == 1){
  7.             return (triangle.get(0)).get(0);
  8.         }
  9.         
  10.         int[][] result = new int[triangle.size()][triangle.size()];
  11.         int mini = Integer.MAX_VALUE;
  12.         for(int i = 0; i < triangle.size(); i++){
  13.             mini = Integer.min(mini, aux(triangle, triangle.size()-1, i, result));
  14.         }
  15.         return mini + triangle.get(0).get(0);
  16.     }
  17.    
  18.     private int aux(ArrayList<ArrayList<Integer>> triangle, int level, int select, int[][] result){
  19.         if(result[level][select] != 0){
  20.             return result[level][select];
  21.         }
  22.         if(level == 1){
  23.             return Integer.min((triangle.get(1)).get(0), (triangle.get(1)).get(1));
  24.         }
  25.         int sum = Integer.MAX_VALUE;
  26.         ArrayList<Integer> currentList = new ArrayList<Integer>(triangle.get(level));
  27.         for(int i = 1; i < level - 1; i++){
  28.             sum = Integer.min(currentList.get(i) + aux(triangle, level-1, i), currentList.get(i) + aux(triangle, level-1, i-1));
  29.         }
  30.         sum = Integer.min(sum, currentList.get(0) + aux(triangle, level-1, 0));
  31.         sum = Integer.min(sum, currentList.get(level) + aux(triangle, level-1, level-1));
  32.         result[level][select] = sum;
  33.         return sum;
  34.     }
  35. }
复制代码
Line 26: error: incompatible types: List<List<Integer>> cannot be converted to ArrayList<ArrayList<Integer>>
就算我26行写 int k = 0; 错误提示还是不变

上一篇:对于想破脑袋都不会的题目怎么办?
下一篇:leetcode还适合面试准备吗?
🔗
stellari 2015-5-13 13:30:51 | 只看该作者
全局:
如果改变了第“26”行的内容,错误依旧,说明错误并非出自第“26”行。事实上,你以为的第“26”行仅仅是Solution类的第26行。而在OJ上,这段代码之前还会有你看不到的内容,比如import之类的语句存在。

先不要看行号,先找找看你的代码中到底哪里用到了 ArrayList<ArrayList<Integer>>,那个(些)地方就是出错的真正位置。
回复

使用道具 举报

🔗
tailofjune 2015-5-14 17:56:52 | 只看该作者
全局:
原因是你把函数头改了.
回复

使用道具 举报

🔗
 楼主| qdolobp 2015-5-14 23:53:31 | 只看该作者
全局:
tailofjune 发表于 2015-5-14 17:56
原因是你把函数头改了.

我以前一直这么改的,都没事:
它默认public int minimumTotal(List<List<Integer>> triangle);
我改成public int minimumTotal(ArrayList<ArrayList<Integer>> triangle);
不然应该怎么写呢?
回复

使用道具 举报

🔗
tailofjune 2015-5-15 00:03:18 | 只看该作者
全局:
qdolobp 发表于 2015-5-14 23:53
我以前一直这么改的,都没事:
它默认public int minimumTotal(List triangle);
我改成public int min ...

不要改函数头就行了.
回复

使用道具 举报

🔗
 楼主| qdolobp 2015-5-15 00:49:35 | 只看该作者
全局:
tailofjune 发表于 2015-5-15 00:03
不要改函数头就行了.

谢谢,我试了一下把所有ArrayList改为List但是:
Line 26: error: List is abstract; cannot be instantiated
我以前就遇见过这种报错,所以才一直将默认的List改为ArrayList
回复

使用道具 举报

🔗
tailofjune 2015-5-15 00:52:31 | 只看该作者
全局:
你需要了解一下interface, abstract class和concrete class.
List是不能new的.
回复

使用道具 举报

🔗
 楼主| qdolobp 2015-5-15 01:06:57 | 只看该作者
全局:
本帖最后由 qdolobp 于 2015-5-15 01:16 编辑
tailofjune 发表于 2015-5-15 00:52
你需要了解一下interface, abstract class和concrete class.
List是不能new的.

我明白你的意思了,编译成功了,但是有个问题,我以前一直改默认的signature, 怎么以前没报错?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表