LeetCode Online Judge 题目C# 练习 - Remove Element

本文介绍了一种在数组中移除特定值并返回新长度的算法。该算法通过将目标值替换为数组末尾的元素来减少数组的有效长度,同时忽略新长度外的数据和元素顺序。

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.

 1         public static int RemoveElemtn(int[] A, int n, int elem)
 2         {
 3             for (int i = 0; i < n; i++)
 4             {
 5                 if (A[i] == elem)
 6                 {
 7                     A[i] = A[n - 1];
 8                     n--;
 9                     i--;
10                 }
11             }
12             return n;
13         }

代码分析:

  这个应该是考审题,或者面试官之给你题目第一句话,让你去问他的前设条件,他再给你题目的第二句话。

  应为题目说order可以变,new length以外的不管。那么就碰到 A[i] == elem, 把当前最后一个元素复制到A[i], 然后 长度 n--, i--(因为重后面复制上来的值可能会等于elem的,要重新审查一次这个 A[i]。

转载于:https://www.cnblogs.com/etcow/archive/2012/10/12/2721934.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值