Easy-题目28:27.Remove Element
2016-05-30 20:13
281 查看
题目原文:
Given an array and a value, remove all instances of that value in place and return the new length.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length.
题目大意:
给一个数组,删除指定元素,并且返回剩下的数组长度。原数组的顺序可以改变。新长度以后的数据是无关紧要的。
题目分析:
使用Java STL中的ArrayList存储数组,遇到指定元素则跳过一次,再遍历ArrayList,把删除后的数组存回原数组,返回ArrayList的长度。
源码:(language:java)
成绩:
2ms,beats 0.74%,众数1ms,67.19%
cmershen的碎碎念:
这道题也得到了一个很差的成绩,原因是使用了开销比较大的STL,且重复了两次写数组。可以通过two pointer的思想改进一下,一个指针指向待存位置,一个指针指向正在扫描的位置,这样仅需一次读写数组。此外,该题的tag中提示了two pointer,以后在做题时tag的信息应予以注意,因为是很好的提示。
Given an array and a value, remove all instances of that value in place and return the new length.
The order of elements can be changed. It doesn’t matter what you leave beyond the new length.
题目大意:
给一个数组,删除指定元素,并且返回剩下的数组长度。原数组的顺序可以改变。新长度以后的数据是无关紧要的。
题目分析:
使用Java STL中的ArrayList存储数组,遇到指定元素则跳过一次,再遍历ArrayList,把删除后的数组存回原数组,返回ArrayList的长度。
源码:(language:java)
public class Solution { public int removeElement(int[] nums, int val) { ArrayList<Integer> list=new ArrayList<Integer>(); for(int i=0;i<nums.length;i++) { if(nums[i]!=val) list.add(nums[i]); } for(int i=0;i<list.size();i++) nums[i]=list.get(i); return list.size(); } }
成绩:
2ms,beats 0.74%,众数1ms,67.19%
cmershen的碎碎念:
这道题也得到了一个很差的成绩,原因是使用了开销比较大的STL,且重复了两次写数组。可以通过two pointer的思想改进一下,一个指针指向待存位置,一个指针指向正在扫描的位置,这样仅需一次读写数组。此外,该题的tag中提示了two pointer,以后在做题时tag的信息应予以注意,因为是很好的提示。
相关文章推荐
- C++独孤九剑第一式——拨云见日(对象内存模型)
- memched1.0源码阅读(2)——基础数据结构
- Easy-题目27:107.Binary Tree Level Order Traversal II
- 深入浅出Mybatis-分页
- jenkins2.6发布tomcat项目
- Java跨域设置
- 存储器管理的基本概念
- shell 修改 JSON文件
- Spring与MongoDB
- React is changing a controlled input of type text to be uncontrolled
- hdu 1596 find the safest road
- Easy-题目26:198. House Robber
- 沙盒路径
- 2015北大夏令营day1 B:An Idea of Mr. A
- 抽象类和接口
- IDEA 安装与设置
- 字符集乱码决绝大全
- iscc2016-basic-find-to-me
- Easy-题目25:101. Symmetric Tree
- zsh的自动完成辅助工具:oh-my-zsh