【华为】2016研发

[编程题]删数

有一个数组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

输入

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的地方就是需要填充的。


 

输出描述:

输出九行,每行九个空格隔开的数字,为解出的答案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值