本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41577997

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)这道题很简单。由于没有空间上的限制,很容易解决。

(2)本文的方法是创建一个链表,将和指定数字不同的元素放入链表,最后得到的链表长度即为所求长度。

(3)为了让移除后剩余的数字在默认顺序上,还必须还原数组的顺序,这里直接遍历链表,将其中元素对应到数组中。

(4)本文只是给出解题方法,由于技术有限,效率和空间的优化尚未涉及,对于大神来说,本文的算法就显得很垃圾了,不过也希望对你有所帮助。

算法所对应代码如下所示:

public static int removeElement(int[] A, int elem) {
	int len = A.length;
	if (len == 0)
		return 0;
	List<Integer> list = new LinkedList<Integer>();

	for (int i = 0; i < len; i++) {
		if (A[i] != elem) {
		   list.add(A[i]);
		}
	}

	for (int i = 0; i < list.size(); i++) {
		A[i] = list.get(i);
	}

	return list.size();
}

上题的算法只是针对数字,如果改为任意对象,那么我们在判断时,就不能用==来进行判断了,而是用equals()方法来进行值的判断。

从对象数组中移除值相同的指定对象并返回剩余对象个数的算法如下:

public static int removeObject(Object[] A, Object elem) {
	int len = A.length;
	if (len == 0)
		return 0;
	List<Object> list = new LinkedList<Object>();

	for (int i = 0; i < len; i++) {
		if (A[i].equals(elem)) {
			list.add(A[i]);
		}
	}

	A = new Object[list.size()];
	for (int i = 0; i < list.size(); i++) {
		A[i] = list.get(i);
	}

	return list.size();
}

最新文章

  1. .NET短距离领域通信-32feet.NET
  2. 菜鸟学Android编程——简单计算器《一》
  3. unity3d中 刚体(Rigidbody) 碰撞体(Collider) 触发器(Is Trigger)
  4. SPOJ 375 Query on a tree
  5. mybatis动态SQL - like
  6. linux内核3.4基于wakeup_source的autosleep机制分析
  7. tomcat 一个项目在本机和办公室以外电脑服务器上搭建出现乱码问题
  8. MYSQL C API : mysql_init()
  9. linux下c程序调用reboot函数实现直接重启【转】
  10. 第一个Java Rest服务
  11. 自助用户选择VM Network
  12. Docker的安装及简单使用
  13. OC基础1:一些基本概念
  14. SVD分解 解齐次线性方程组
  15. Python Day 8
  16. python while循环案例
  17. VC在线程中操作界面
  18. JAVA语言 第四周
  19. UIKit&#160;框架之UIResponder
  20. PS辅助工具Assistor PS

热门文章

  1. ES6(es2015)新增实用方法汇总
  2. AnyConnect使用说明(手机版)
  3. Vulkan的分层设计
  4. Linux下端口复用(SO_REUSEADDR与SO_REUSEPORT)
  5. Linux 高性能服务器编程——IP协议详解
  6. spark下使用submit提交任务后报jar包已存在错误
  7. BI Publisher(rtf)模板开发语法大全
  8. FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分
  9. P2P系统,一致性哈希和DHT
  10. How to generate the complex data regularly to Ministry of Transport of P.R.C by DB Query Analyzer