数据结构与算法刷题(二)

1、在下面的一维数组定义中,哪一个有语法错误。(    )
正确答案: C 
A、int a[]={1,2,3};
B、int a[10]={0};
C、int a[];
D、int a[5];
解析:java中数组左边的定义部分是不能出现常数表达式的 所以BD语法错误。 但是C中如果不使用指针,左边括号须有常数,否则右边必须有具体数组。所以c语法错误。
2、以下程序执行的结果是:
class X{
    Y y=new Y();
    public X(){
        System.out.print("X");
    }
}
class Y{
    public Y(){
        System.out.print("Y");
    }
}
public class Z extends X{
    Y y=new Y();
    public Z(){
        System.out.print("Z");
    }
    public static void main(String[] args) {
        new Z();
    }
}
正确答案: C   
A、ZYXX
B、ZYXY
C、YXYZ
D、XYZX
解析:初始化过程: 
1. 初始化父类中的静态成员变量和静态代码块 ; 
2. 初始化子类中的静态成员变量和静态代码块 ; 
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法; 
 
(1)初始化父类的普通成员变量和代码块,执行  Y y=new Y();  输出Y 
(2)再执行父类的构造方法;输出X
(3) 初始化子类的普通成员变量和代码块,执行  Y y=new   Y();  输出Y 
(4)再执行子类的构造方法;输出Z
 所以输出YXYZ

3、代码行float t=5.1; int i=t; ,不正确的是
正确答案: B   
A、代码不能编译
B、代码编译, i被设置为5
C、第二行若改为 int i=(byte)t 则可编译
D、第一行若改为 float t=5.1f 则可编译
解析:小数默认double类型,如需指明float需要在后面加f,t是小数,不能直接赋给int类型,把t强转为byte再赋给i即可
4、Which of the following can be applied to constructors:
正确答案: E

A、final
B、static
C、synchronized
D、native
E、None of these.
解析:
1、java构造方法可以有任何访问的修饰:public, protected, private 或者没有修饰(通常被 package  和  friendly 调用)。但是不能有以下非访问性质的修饰: abstract, final, native, static,  或者  synchronized 。
2、类默认提供一个无参构造方法。
3、java构造方法中的this关键字: 构造器的this指向同一个类中,用于调用同一个类中不同参数列表的另外一个构造器,必须放在第一行,否则会引起编译错误!
4、java构造方法中的super关键字:构造方法的super关键字用于调用其父类的构造方法,子类默认调用父类的构造方法,也就是说super()是默认调用的,显示调用必须放在构造方法第一行!

5、c中,二维数组初始化的方法是:int a[3][3]={{1},{2},{3}};说法是否正确?
正确答案: A

A、正确
B、错误
解析:正确的, 最外层的 { ... } 会初始化 a[] 即第一维。而 {1} 会初始化 a[0][] 由于只有一个元素,后续元素会默认置 0 。其他同理。
6、在很多时候,我们需要给网页中的一些元素不停的切换样式,那么要怎样实现给元素删除一个样式的同时,添加另外一个样式(      )
正确答案: A  

A、$('#ele').removeClass('className');
$('#ele').addClass('ClassName');
B、$('us').removeClass('className');
$('us').addClass('ClassName');
C、$('.us').removeClass('className');
$('.us').addClass('ClassName');
D、$('us').remove('className');
$('us').add('ClassName');
解析:本题考察JQuery中选择器的知识。
常用有三种:
①元素选择器:$("TagName") 
②ID 选择器:  $("#ID")
③类选择器:$(".className")

B:错误。选项使用元素选择器,但是 HTML 中没有 us 标签(不考虑自定义标签这种特殊情况)
C:错误。选项使用类选择器,看起来是正确的。但, 删除了类样式后,如何通过类选择器给元素添加样式呢?
D:错误。add() 方法:把元素添加到已存在的元素组合中。 remove() 方法:移除被选元素,包括所有的文本和子节点。

7、关于匿名内部类叙述正确的是? ( )
正确答案: B
  
A、匿名内部类可以继承一个基类,不可以实现一个接口
B、匿名内部类不可以定义构造器
C、匿名内部类不能用于形参
D、以上说法都不正确
解析:匿名内部类的创建格式为:
 new 父类构造器(参数列表)实现接口(){
 //匿名内部类的类体实现
  }
1、使用匿名内部类时,必须继承一个类或实现一个接口
2、匿名内部类由于没有名字,因此不能定义构造函数
3、匿名内部类中不能含有静态成员变量和静态方法

8、一个非空广义表的表尾()
正确答案: B

A、不能是子表
B、只能是子表
C、只能是原子
D、是原子或子表
解析:非空广义表的表头可以是原子或子表,表尾一定是子表
9、下列代码存在几个变量没有被回收?( )
var i = 1;
var i = 2;
var add = function() {
    var i = 0;
    return function()
{
        i++;
        console.log(i);
    }
}();
add();
正确答案: D   
A、0个
B、1个
C、2个
D、3个
解析:代码回收规则如下:
1.全局变量不会被回收。
2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。
3.只要被另外一个作用域所引用就不会被回收。
有3个变量没有被回收,首先是全局变量中的i,第二行会覆盖掉第一行,因此只有1个。第二个是var add,这个变量也没有回收,他定义了一个匿名函数,并将它赋给了add。第三个就是闭包中的变量i,闭包中的局部变量是不会被回收的,因此是3个变量没有被回收

10、便于插入和删除的容器是()
正确答案: A C D   

A、list
B、vector
C、map
D、set
解析:
1.list底层数据结构为双向链表,支持快速增删
2.vector底层数据结构为数组,支持快速随机访问
3.map底层数据结构为红黑树,除了hashmap无序,其他实现结构有序,不重复
4.set底层数据结构为红黑树,除了hashset无序,其他实现结构有序,不重复

编程题:169
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3]
输出: 3
示例 2:
输入: [2,2,1,1,1,2,2]
输出: 2

解法1:现将整个数组进行排序,设定两个指针i、j(默认指向第一个元素),设定两个变量count(出现的次数)、aim(出现次数最多的值),当i指向一个数字后i不动,j向后移动,当把当前数字读完后,如果当前数字出现的次数多,把当前数字付给aim,出现的次数付给count(出现的次数少则不变)i、j指向下一个数字继续执行前面的操作

class Solution {
    public int majorityElement(int[] nums) {
        Arrays.sort(nums);
		int count=0;
		int aim=0;
		int curCount=0;
		int curAim=0;
		int j=0;
		for(int i=0;i(nums.length-1)/2){
				break;
			}
			curAim=nums[i];
			curCount=1;
			for(j=i+1;jcount){
				count=curCount;
				aim=curAim;
			}
			i=j;
		}
		return aim;
    }
}

解法2:把相等的元素看成一个整体,每个元素拿出相等的个数进行抵消,当抵消结束后剩余的一个就是众数。

class Solution {
    public int majorityElement(int[] nums) {
       int num=nums[0];
		int count=1;
		for(int i=1;i

 

你可能感兴趣的:(Java)