(1)给定一个数组arr[]和欲在其中选中的数n,输出不同的选中顺序
(本题的高明之处在于下面的递归之处,一个数选中,则在剩下的选择n-1,否则的话则在剩下中选择n个)
public void combination(List<Integer> selected,List<Integer>data ,int n) {
if(n==0) {
for(Integer i :selected) {
System.out.println(i);
System.out.println(" ");
}
System.out.println(" ");
return;
}
if(data.isEmpty()) return;
selected.add(data.get(0));
combination(selected,data.subList(1, data.size()),n-1);
selected.remove(data.size()-1);
combination(selected,data.subList(1, data.size()),n);
}
(2)删除链表中的某一个数
(注意删除节点是头结点,还有头节点若删除为空的情况)
public Node deleteIfEquals(Node head ,int value) {
//循环的判断头节点是否等于value,若一直等于,则为空
while(head !=null && head.getValue()==value)
{
head=head.getNext();
}
//为空判断
if(head==null) return null;
Node prev = head;
while(prev.getNext()!=null) {
if(prev.getNext().getValue()==value) {
prev.setNext(prev.getNext().getNext());
}else {
prev=prev.getNext();
}
}
return head;
}
(3)通过递归和非递归的方法反转一个链表
public Node createLinkedList(List<Integer> data) {
if(data.isEmpty()) {
return null;
}
Node firstnode = new Node(data.get(0));
Node headOfSubList =createLinkedList(data.subList(1, data.size()));
firstnode.setNext(headOfSubList);
return firstnode;
}
public Node reverLinkedList(Node head) {
//特殊情况当node为空或者只有一个节点的时候
if(head==null || head.getNext() ==null) {
return null;
}
//最终将反转到最后一个node
Node newNode = reverLinkedList(head.getNext());
head.getNext().setNext(head);
head.setNext(null);
return newNode;
}
public Node reverseLiskedList(Node node) {
//新的头节点
Node newHead = null;
//下一节点
Node curHead = null;
while(curHead!=null) {
Node next = curHead.getNext(); //保存第三节点
curHead.setNext(newHead);
newHead=curHead;
curHead=next;
}
return newHead;
}
(4) 一个数的N进制转换
(把其中的i换成输入数字,2换成欲转换的进制即可)
public static void main(String[] args) {
int i = 13;
StringBuffer sb = new StringBuffer();
while (i!=0) {
int n = i%2;
sb.append(n);
i/=2;
}
System.out.println(Integer.parseInt(new String(sb)));
}
(5)一个常用统计数组的方法
public static void main(String[] args) {
int a[] ={33,23,42,34,23,56,23,43,54,45,32,35};
Map<Integer, Integer> map = new HashMap<>();
for (int str : a) {
Integer num = map.get(str);
map.put(str, num == null ? 1 : num + 1);
}
Set set = map.entrySet();
Iterator it = set.iterator();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = (Entry<Integer, Integer>) it.next();
System.out.println("key " + entry.getKey() + "value : " + entry.getValue());
}
}
网友评论