`
unbounder
  • 浏览: 174728 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

复习笔记1

    博客分类:
  • job
阅读更多
1 字符串比较

public static void main(String[] args) {
		String a = "123";
		String b = "1" + "2" + "3";
		System.out.println(a == b);// true
		String c = new String("123");
		System.out.println(a == c);// false
		String d = "1" + "2";
		d = d + "3";
		System.out.println(a == d);// false
String e = d.intern();
		System.out.println(a == e);//true
	}

这种题目笔试题中常见,加号被jvm重写为stringbuilder

string有一个池子,初始化时会先从池子里找是否有现成的,所以a和b是一样的
c是new出来的,必须不一样
d分两步,也就是new了两个stringbuilder在做这件事情(这里也就是为什么加号被重写了,也提倡用stringbuilder来处理字符串拼接的原因,另外stringbuffer线程安全),所以相当于县产生了一个“12”的string,在产生“123”,和a已经有区别了。
e需要了解intern方法,他相当于去直接调用之前提到的池子了。所以取到的一定是a。

2 Class

两种方式 class.forname()和a.class
前者会初始化(包括运行static块),后者没有这一步骤
接下来新建的方式都是newInstance(),会完成上面的步骤以及运行new a()方法。


3 一道算法题,阿里巴巴一次笔试里出现过
给定一个正整数a和一个逆序排好的正整数数组b[],给出所有由b中元素相加表示a的结果

public class PPP {
	int n = 6;

	@SuppressWarnings("unchecked")
	private void find(int t, int begin, int[] array, ArrayList<Integer> result) {
		if (t == 0) {
			System.out.println(result);
			return;
		}
		for (int i = begin; i < n; i++) {
			ArrayList<Integer> tempList = (ArrayList<Integer>) result.clone();
			int temp = array[i];
			if (temp > t) {
				continue;
			} else {
				tempList.add(temp);
				find(t - temp, i + 1, array, tempList);
				while (i < n - 1) {
					if (array[i + 1] == temp) {
						i++;
					} else {
						break;
					}
				}
			}
		}
	}

	public static void main(String[] args) {
		PPP p = new PPP();
		int[] temp = { 4, 3, 2, 2, 1, 1 };
		ArrayList<Integer> result = new ArrayList<Integer>();
		p.find(6, 0, temp, result);
	}
}

简化题目,先列数组只有六个元素,这个不影响算法
基本思路是剪枝,空间消耗比较大,因为在不断的clone队列。习惯问题,改成数组对于整体算法来说也没什么影响。

4 某年emc的一道算法题
2n+1个数,其中有n个成对出现,1个单独的,找出单独的那个

快排再边里,时间复杂度大概是快排的复杂度o(nlogn)
尝试不排序,开一个hashset
遍历原数组,没看到一个数,如果set里面有,就remove,如果没有,就add
最后将set中的数取出,就为单独的数
hashset查找的复杂度是o(1)
整个算法的时间复杂度应该是o(n)
空间复杂度o(n)
分享到:
评论

相关推荐

    网络管理员复习笔记1到15

    《网络管理员复习笔记1到15》是一份全面梳理网络工程基础知识的资料,对于网络工程师来说,这是一份不可多得的复习材料,尤其对于准备网络工程师考试的人员而言,具有较高的参考价值。 网络工程领域博大精深,涉及...

    信息系统项目管理师复习笔记1.pdf

    《信息系统项目管理师复习笔记1》的要点涵盖了计算机系统的基础知识、处理器管理、存储系统、操作系统、进程管理和存储管理等多个方面。以下是对这些知识点的详细解释: 1. **计算机基本组成**:计算机由运算器、...

    计算机视觉复习笔记1

    总的来说,计算机视觉复习笔记1主要涵盖了从图像输入到高级理解的全过程,包括基本的图像处理技术、特征提取、三维重建、目标识别以及系统设计和优化等多个方面,这些都是理解和应用计算机视觉的基础。

    网程复习笔记1至15章

    【网络工程复习笔记1至15章】涵盖了计算机网络的基础知识,从历史发展到网络分类,再到网络体系结构和协议的详细解析。本笔记适用于网络程序员考试的复习,旨在帮助学习者掌握网络通信的核心概念。 1. **计算机网络...

    网工复习笔记1.rar

    网工复习笔记1.rar 网工复习笔记1.rar

    网络工程师复习笔记1至15章

    网络工程师复习笔记1至15章,对于要参加11月份计算机水平考试的非常有用

    哈工大计算机复试C语言复习笔记 1

    【哈工大计算机复试C语言复习笔记 1】 在计算机科学领域,C语言是一门基础且重要的编程语言,尤其在哈工大的计算机专业考研复试中,掌握C语言的知识显得至关重要。本复习笔记主要涵盖以下几个核心章节,旨在帮助有...

    哈工大计算机复试C语言复习笔记1

    【哈工大计算机复试C语言复习笔记1】 在准备哈工大计算机专业的考研复试时,C语言是一项重要的复习内容。本笔记将详细讲解C语言的基础知识,帮助考生系统理解和掌握这一编程语言。 ### 第一章:为什么学C语言 ...

    数据库复习笔记1.pdf

    计算机数据库复习笔记1.pdf

    网络管理员复习笔记1-14章

    【网络管理员复习笔记1-14章】 网络管理员的工作涉及对计算机网络的管理和维护,而这份复习笔记涵盖了从基础知识到具体协议的多个方面。首先,计算机网络被定义为多台独立计算机按照通信协议互相连接的系统,其目标...

    2023年计算机软考网络管理员精华复习笔记1.doc

    "2023年计算机软考网络管理员精华复习笔记1.doc" 本资源是计算机软考网络管理员精华复习笔记的第一部分,涵盖了计算机网络管理员需要掌握的基础知识。主要内容包括数据通信、多路复用、异步传输和同步传输、数据...

    网络管理员_复习笔记1-14章

    网络管理员_复习笔记1-14章关于软考中网络管理员考试的

    计算机软考网络管理员精华复习笔记1.doc

    计算机软考网络管理员精华复习笔记1.doc

    网络管理员复习笔记1至15章

    网络管理员考试复习的好资料,有关课程的精华资料记载,可供享用^

    机器学习复习笔记1

    考试时间:2018.12.27 7:00 PM-9:00 PM考试地点:A1-302 A1-304第一章Basic Concept机器学习基础(3)Linear

    操作系统复习笔记1——该素

    本篇复习笔记主要涵盖了操作系统的基本架构、I/O方法、内存管理以及存储层次结构等核心概念。 首先,我们来看两种I/O方法。同步I/O(Synchronous)是一种等待I/O操作完成才返回控制给用户程序的方式,这可能导致CPU...

Global site tag (gtag.js) - Google Analytics