📣 独立日限时特惠: VIP通行证立减$68
12
返回列表 发新帖
楼主: love1point
跳转到指定楼层
上一主题 下一主题
收起左侧

First Missing Positive

🔗
hulahu 2015-8-12 01:20:27 | 只看该作者
全局:
love1point 发表于 2015-8-11 22:36
Thanks for reply.

But your code still cannot AC.

你copy这个到leetcode, 看看能不能跑过。

public class Solution {
    public int firstMissingPositive(int[] nums) {
        if(nums == null || nums.length == 0)
        {
            return 1;
        }
        for(int i = 0; i < nums.length; i++)
        {
            if(nums[i] == i + 1 || nums[i] <= 0 || nums[i] > nums.length || nums[i] == nums[nums[i]-1])
            {
                continue;
            }
            
            int temp = nums[i];
            nums[i] = nums[temp - 1];
            nums[temp-1] = temp;
            i--;
        }
        
        for(int i = 0; i < nums.length; i++)
        {
            if(nums[i] != i + 1)
            {
                return i + 1;
            }
        }
        return nums.length + 1;
    }
}
回复

使用道具 举报

🔗
 楼主| love1point 2015-8-12 01:47:28 | 只看该作者
全局:
hulahu 发表于 2015-8-12 01:20
你copy这个到leetcode, 看看能不能跑过。

public class Solution {

感想回复。
现在leetcode在维护中,等可以提交时我再提交。给你反馈哈。谢谢
回复

使用道具 举报

🔗
flyaway25 2015-8-12 02:05:29 | 只看该作者
全局:
love1point 发表于 2015-8-12 01:47
感想回复。
现在leetcode在维护中,等可以提交时我再提交。给你反馈哈。谢谢

你的code在交换那先改变了nums[i]的值所以后面的式子中nums[i]-1就不对了,后面nums[nums[i]-1]里面的nums[i]应该用的是改变之前的值。你可以试下先改变nums[nums[i]-1]的值然后交换给nums[i]。
回复

使用道具 举报

🔗
 楼主| love1point 2015-8-12 03:50:05 | 只看该作者
全局:
hulahu 发表于 2015-8-12 01:20
你copy这个到leetcode, 看看能不能跑过。

public class Solution {

非常感谢。你的代码可以过哈,只要nums 换成 nums[i], 我懂你意思哈
回复

使用道具 举报

🔗
 楼主| love1point 2015-8-12 03:50:55 | 只看该作者
全局:
flyaway25 发表于 2015-8-12 02:05
你的code在交换那先改变了nums的值所以后面的式子中nums-1就不对了,后面nums[nums-1]里面的nums应该用的 ...

是的,你的一句话提醒梦中人,不然我老是改不出来。非常感谢
回复

使用道具 举报

🔗
 楼主| love1point 2015-8-12 03:52:05 | 只看该作者
全局:
感谢各位的纠正。

可以ac代码;
  1. public class Solution {
  2.     public int firstMissingPositive(int[] nums) {
  3.         if(nums == null || nums.length == 0)
  4.         {
  5.             return 1;
  6.         }
  7.         for(int i = 0; i < nums.length; i++)
  8.         {
  9.             if(nums[i] == i + 1 || nums[i] <= 0 || nums[i] > nums.length || nums[i] == nums[nums[i]-1])
  10.             {
  11.                 continue;
  12.             }
  13.             
  14.             int temp = nums[i];
  15.             nums[i] = nums[nums[i] - 1];
  16.             nums[temp-1] = temp;
  17.             i--;
  18.         }
  19.         
  20.         for(int i = 0; i < nums.length; i++)
  21.         {
  22.             if(nums[i] != i + 1)
  23.             {
  24.                 return i + 1;
  25.             }
  26.         }
  27.         return nums.length + 1;
  28.     }
  29. }
复制代码
回复

使用道具 举报

🔗
hulahu 2015-8-12 05:51:48 | 只看该作者
全局:
love1point 发表于 2015-8-12 03:52
感谢各位的纠正。

可以ac代码;

奇怪, 我之前copy 的怎么和我local 的不一样。难怪你喊跑不过。 怎么贴代码啊。
回复

使用道具 举报

🔗
 楼主| love1point 2015-8-12 05:54:11 | 只看该作者
全局:
hulahu 发表于 2015-8-12 05:51
奇怪, 我之前copy 的怎么和我local 的不一样。难怪你喊跑不过。 怎么贴代码啊。

我改了你一点代码哈,所以我没过。你的基本正确哈。

点击这个 <>  贴代码哈   
回复

使用道具 举报

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

本版积分规则

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