【LeetCode】数组移除元素
链表等复杂数据结构用多了,简单的数组操作也不能遗忘!
1. 给定一个有序数组,移除所有重复元素并返回新的数组长度,不能分配额外数组的内存空间。
e.g. 给定输入的数组 = [1,1,2],函数应当返回新长度 = 2,前 2 个元素为 1 和 2。超出新长度所剩下什么元素都无所谓,即新数组可以 = [1,2,2]。
一开始没读懂 “It doesn't matter what you leave beyond the new length.” 的含义,用了 erase 方法非常复杂,答案比较简略。
int removeDuplicates(vector<int>& nums) {
int count = ;
for (int i = ; i < nums.size(); i++) {
if (nums[i] == nums[i - ])
count++;
else
nums[i - count] = nums[i];
}
return nums.size() - count;
}
这个更加易懂
int removeDuplicates(vector<int>& nums) {
if (nums.empty()) return ;
int count = ;
for (int i = ; i < nums.size(); i++)
if (nums[i] != nums[i - ])
nums[count++] = nums[i];
return count;
}
但这样的代码不够“好看”,可以改进为
int removeDuplicates(vector<int>& nums) {
int i = ;
for (int n : nums)
if (!i || n != nums[i-])
nums[i++] = n;
return i;
}
如果不想用 !i 来做第一个元素的判断,代码还能写的更巧妙
int removeDuplicates(vector<int>& nums) {
int i = !nums.empty();
for (int n : nums)
if (n != nums[i-])
nums[i++] = n;
return i;
}
int i = !nums.empty(); 这样的写法真的很有趣很有趣,值得学习!
2. 给定一个数组和一个值,移除数组中所有等于该值的元素,并返回新数组的长度,不能分配额外数组的内存空间。超出新长度所剩余的元素也不考虑。
使用类似的方法很快解决
int removeElement(vector<int>& nums, int val) {
int i = ;
for(int n : nums) {
if (n != val)
nums[i++] = n;
}
return i;
}
【LeetCode】数组移除元素的更多相关文章
- 前端与算法 leetcode 27.移除元素
目录 # 前端与算法 leetcode 27.移除元素 题目描述 概要 提示 解析 算法 @(目录) # 前端与算法 leetcode 27.移除元素 题目描述 27.移除元素 概要 题目本身其实挺简 ...
- LeetCode数组移除数组中目标元素等题目
一种自己解题,一种高赞解题 /** * 移除数组中目标元素,返回新数组长度 * @param nums * @param val * @return */ public int removeEleme ...
- Java实现 LeetCode 27 移除元素
27. 移除元素 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额 ...
- [Leetcode]27. 移除元素
题目描述: ++难度:简单++ 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 ...
- 【LeetCode】移除元素(Remove Element)
这道题是LeetCode里的第27道题. 题目描述: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原 ...
- Leetcode 27.移除元素 By Python
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- 力扣(LeetCode)移除元素 个人题解
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- leetcode 27. 移除元素(python)
1. 题目描述 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外 ...
- [LeetCode]27.移除元素(Java)
原题地址: remove-element 题目描述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必 ...
随机推荐
- SAP固定资产业务场景及方案
SAP固定资产业务场景及方案 http://mp.weixin.qq.com/s/hYlaNHJMQBTZpyFAmP2h3A 对于FICO应用资深专家或顾问,须业务场景及需求成竹在胸:对于非财务顾问 ...
- HDU 5754 Life Winner Bo(各类博弈大杂合)
http://acm.hdu.edu.cn/showproblem.php?pid=5754 题意: 给一个国际象棋的棋盘,起点为(1,1),终点为(n,m),现在每个棋子只能往右下方走,并且有4种不 ...
- SpringLog4j日志体系实现方式
1.通过web.xml读取log4j配置文件内容 2.通过不同的配置信息,来实现不同的业务输出,注意:log4j可以写入tomcat容器,也可以写入缓存,通过第三方平台读取 #输入规则#log4j.r ...
- 查看iis对应w3wp.exe显示的进程ID号
1.任务管理器,查看,选择列,选择PID(进程标识符) 2.通过cmd查询: 管理员身份运行cmd,跳转到C:\Windows\System32\inetsrv目录,然后运行appcmd list w ...
- 【Java】【控制流程】
#栗子 丢手帕 & 菱形 & 金字塔import java.io.*;import java.util.*; public class Test_one { public static ...
- SPOJ QTREE Query on a tree 树链剖分+线段树
题目链接:http://www.spoj.com/problems/QTREE/en/ QTREE - Query on a tree #tree You are given a tree (an a ...
- python 传递多个参数
def oper(a,*args): print(args) print(a) oper("q","s","d","z" ...
- Hadoop 学习路线
大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图 描述 本路线图是一个专门针对大数据实时处理.Hadoop工程师和数据分析师所设计的课程体系介绍,在实时计算方向主要包括了从数据收集框架. ...
- 小程序模板template
WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用. 定义模板 使用 name 属性,作为模板的名字.然后在<template/>内定义代码片段,如: & ...
- 前端阶段_html部分
HTML 1.html5的第一行一定是<!DOCTYPE html>,h4太长,而且一般ide中会自动加载,了解即可. 2.h5的整个页面被<html></html> ...