[编程题]删数
有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。
输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
示例1
输入
8
输出
6
组成一个环形的链表,必会的题!!加油
import java.util.*;
class node {
int value;
node next;
public node() {
}
public node(int value, node next) {
this.value = value;
this.next = next;
}
}
public class Main {
public static void main(String[] args) {
first();
}
public static void first() {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
int num = in.nextInt();
node root = new node();
root.value = 0;
// 记录头的位置
node rootNode = root;
for (int i = 1; i < num; i++) {
node node = new node();
node.value = i;
root.next = node;
root = node;
}
root.next = rootNode;
while (rootNode != rootNode.next) {
root=rootNode.next.next;
rootNode.next.next=root.next;
rootNode=root.next;
}
System.out.println(rootNode.value);
}
}
}
[编程题]字符集合
输入一个字符串,求出该字符串包含的字符集合
输入描述:
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
输出描述:
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
示例1
扫描二维码关注公众号,回复:
4030505 查看本文章
输入
abcqweracb
输出
abcqwer
没什么说的,用set集合去重
import java.util.*;
public class Main {
public static void main(String[] args) {
delete();
}
public static void delete() {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
char[] c = in.next().toCharArray();
StringBuffer sb = new StringBuffer();
Set<Character> set = new HashSet<Character>();
for (int i = 0; i < c.length; i++) {
if (set.add(c[i]))
sb.append(c[i]);
}
System.out.println(sb.toString());
}
}
}
最后一题数独,不太想研究了
数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。
输入描述:
输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。
输出描述:
输出九行,每行九个空格隔开的数字,为解出的答案。