25.json 4.5 KB
Newer Older
每日一练社区's avatar
test  
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
{
   "question_id": 26,
   "question_title": "删除有序数组中的重复项",
   "difficulty": "简单",
   "question_content": "<div class=\"notranslate\">\n    <p>给你一个有序数组 <code>nums</code> ,请你<strong><a href=\"http://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95\">\n                原地</a></strong> 删除重复出现的元素,使每个元素 <strong>只出现一次</strong> ,返回删除后数组的新长度。</p>\n\n    <p>不要使用额外的数组空间,你必须在 <strong><a href=\"https://baike.baidu.com/item/%E5%8E%9F%E5%9C%B0%E7%AE%97%E6%B3%95\">原地\n            </a>修改输入数组 </strong>并在使用 O(1) 额外空间的条件下完成。</p>\n\n    <p>&nbsp;</p>\n\n    <p><strong>说明:</strong></p>\n\n    <p>为什么返回数值是整数,但输出的答案是数组呢?</p>\n\n    <p>请注意,输入数组是以<strong>「引用」</strong>方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。</p>\n\n    <p>你可以想象内部操作如下:</p>\n\n    <pre>// <strong>nums</strong> 是以“引用”方式传递的。也就是说,不对实参做任何拷贝\nint len = removeDuplicates(nums);\n\n// 在函数里修改输入数组对于调用者是可见的。\n// 根据你的函数返回的长度, 它会打印出数组中<strong> 该长度范围内</strong> 的所有元素。\nfor (int i = 0; i &lt; len; i++) {\n&nbsp; &nbsp; print(nums[i]);\n}\n</pre>\n    &nbsp;\n\n    <p><strong>示例 1:</strong></p>\n\n    <pre><strong>输入:</strong>nums = [1,1,2]\n<strong><br />输出:</strong>2, nums = [1,2]\n<strong><br />解释:</strong>函数应该返回新的长度 <strong>2</strong> ,并且原数组 <em>nums </em>的前两个元素被修改为 <strong>1</strong>, <strong>2 </strong>。不需要考虑数组中超出新长度后面的元素。\n    </pre>\n\n    <p><strong>示例 2:</strong></p>\n\n    <pre><strong>输入:</strong>nums = [0,0,1,1,1,2,2,3,3,4]\n<strong><br />输出:</strong>5, nums = [0,1,2,3,4]\n<strong><br />解释:</strong>函数应该返回新的长度 <strong>5</strong> , 并且原数组 <em>nums </em>的前五个元素被修改为 <strong>0</strong>, <strong>1</strong>, <strong>2</strong>, <strong>3</strong>, <strong>4</strong> 。不需要考虑数组中超出新长度后面的元素。\n    </pre>\n\n    <p>&nbsp;</p>\n\n    <p><strong>提示:</strong></p>\n\n    <ul>\n        <li><code>0 &lt;= nums.length &lt;= 3 * 10<sup>4</sup></code></li>\n        <li><code>-10<sup>4</sup> &lt;= nums[i] &lt;= 10<sup>4</sup></code></li>\n        <li><code>nums</code> 已按升序排列</li>\n    </ul>\n\n    <p>&nbsp;</p>\n</div>",
   "topic_link": "https://bbs.csdn.net/topics/600470118",
   "cpp": "#include <bits/stdc++.h>\nusing namespace std;\nclass Solution\n{\npublic:\n\tint removeDuplicates(vector<int> &nums)\n\t{\n\t\tif (nums.size() == 0)\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\tint count = 1;\n\t\tfor (int i = 1; i < nums.size(); i++)\n\t\t{\n\t\t\tif (nums[i - 1] != nums[i])\n\t\t\t{\n\t\t\t\tnums[count++] = nums[i];\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t}\n};",
   "java": "class Solution {\n\tpublic int removeDuplicates(int[] nums) {\n\t\tif (nums == null || nums.length == 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tint a = 0;\n\t\tfor (int b = 1; b < nums.length; b++) {\n\t\t\tif (nums[a] != nums[b]) {\n\t\t\t\ta++;\n\t\t\t\tnums[a] = nums[b];\n\t\t\t}\n\t\t}\n\t\treturn a + 1;\n\t}\n}\n",
   "js": "",
   "python": "class Solution(object):\n\tdef removeDuplicates(self, nums):\n\t\tif len(nums) == 0:\n\t\t\treturn 0\n\t\tleft = 0\n\t\tfor i in range(1, len(nums)):\n\t\t\tif nums[left] == nums[i]:\n\t\t\t\tcontinue\n\t\t\telse:\n\t\t\t\tleft += 1\n\t\t\t\tnums[left] = nums[i]\n\t\treturn left + 1\n# %%\ns = Solution()\nprint(s.removeDuplicates(nums = [1,1,2]))",
   "status": 1,
   "keywords": "数组,双指针",
   "license": {
      "cpp": "https://github.com/begeekmyfriend/leetcode",
      "python": "https://github.com/qiyuangong/leetcode",
      "java": "https://github.com/zhangyu345293721/leetcode"
   },
   "notebook": {
      "cpp": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/leetcode/ipynb/25/25_cpp.ipynb?type=file",
      "python": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/leetcode/ipynb/25/25_python.ipynb?type=file",
      "java": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/leetcode/ipynb/25/25_java.ipynb?type=file"
   },
   "notebook_enable": 1
}