手写一个快速排序算法
司空见惯,代码就省略了。
手写一个Map数据结构的类
-
问:你了解HashMap吗?
-
答:了解
-
问:好,那你可以写一个简单的Map吗?
//简单起见,成员变量都没有私有化
class MapArr{
public LinkedListDemo[] linkedListDemo;
public int size;
public MapArr(int size) {
this.size = size;
linkedListDemo=new LinkedListDemo[size];
}
//确定数组下标的方法(取模法)
public int site(int key){
return key%size;
}
public void add(Entity entity){
int site=site(entity.key);
if(linkedListDemo[site]==null){
linkedListDemo[site]=new LinkedListDemo();
}
linkedListDemo[site].add(entity);
}
public void delete(int key){
int site=site(key);
if(linkedListDemo[site]==null){
return;
}
int res= linkedListDemo[site].delete(key);
if(res==-1){
linkedListDemo[site]=null;
}
}
public void show(){
for (int i = 0; i <size ; i++) {
if(linkedListDemo[i]==null){
continue;
}
linkedListDemo[i].show(i);
}
}
}
class Entity{
public int key;
public String value;
public Entity next;
public Entity(int key, String value) {
this.key = key;
this.value = value;
}
@Override
public String toString() {
return "Entity{" +
"key=" + key +
", value='" + value + '\''+"}";
}
}
class LinkedListDemo{
public Entity head;
public void add(Entity entity){
if(head!=null){
Entity temp=head;
if(temp.next==null){
temp.next=entity;
return;
}
while(temp.next!=null){
temp=temp.next;
}
temp.next=entity;
}else{
head=entity;
}
}
public int delete(int key){
Entity temp=head;
if(temp.next==null&&temp.key==key){
return -1;
}
while (temp.next!=null){
if(temp.next.key==key){
temp.next=temp.next.next;
return 1;
}
temp=temp.next;
}
return 0;
}
public void show(int i){
Entity temp=head;
if(temp.next==null){
System.out.println(temp.toString());
}else{
while (temp.next!=null){
System.out.println(temp.toString());
temp=temp.next;
}
System.out.println(temp.toString());
}
System.out.println("数组下标为"+i+"的链表信息");
}
}
以上为我个人理解的答案,相当于实现一个简单的hashmap,实际面试中我没有解答出来,汗颜...