Java编程练手100题

本文给出100道Java编程练手的程序。

列表如下:

面试编程

  1. 写一个程序,去除有序数组中的重复数字
  2. 编写一个程序使得两个线程陷入死锁
  3. 使用递归算法反转字符串
  4. 合并两个有序数组
  5. 找出三个有序数组共有的元素
  6. 字符(字母、数字、中文字符)统计示例
  7. 最短时间过桥
  8. 从一个整数数组中找出总和为S的所有子集
  9. 5个钢珠离开凹轨的最短时间和最长时间
  10. 1到50个数,每次去掉两个数,增加两个数差的绝对值,最后剩什么数?为什么?
  11. 输出全排列
  12. 随机产生和为S的N个正整数
  13. Java洗牌
  14. 判断一个集合能否分成和一致的两个子集合,并且输出其中一半的子集内容。
  15. 归并排序Java实现
  16. 快速排序Java实现
  17. 列出拥有M个元素集合的含有N个元素的所有子集
  18. 计算非负数二进制形式中1的个数
  19. 将数组分割成差值最小的子集
  20. 统计给定数组中0的个数
  21. 三个线程循环打印ABC10次
  22. 河内塔
  23. 重排数组使得array[i]等于array[array[i]],但只能用0(1)的额外空间
  24. 打印一个数组所有的非空子集
  25. 连续数字的旋转二维数组
  26. 寻找数组中只出现一次的数
  27. 有四个线程1、2、3、4。线程1的功能就是输出A,线程2的功能就是输出B,以此类推…
  28. 所有数值为0的元素置于数组最后
  29. 一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
  30. 还剩余多少盏灯亮着
  31. 列出走楼梯或者台阶的所有走法
  32. 从一个整数数组中找出总和为S的所有子集
  33. 最大连续子序列和
  34. 去除有序数组中的重复数字
  35. 找出三个有序数组共有的元素
  36. 字符(字母、数字、中文字符)统计示例
  37. 合并两个有序数组
  38. 使用递归算法反转字符串
  39. 找出数组中出现次数超过一半的数
  40. 给定一个字符集合S和一个正整数K,输出长度为K的所有组合
  41. 给定一个只有0,1,2的数组,只用一个循环将该数组排序
  42. 如果在数据范围[0, 2^x - 1]中少了一个数,这个数是哪一个呢?
  43. 给定一个数组和一个指定的sum值,给出所有的和为sum的元素对
  44. 奇数魔方阵
  45. 两个线程轮换打印1-100内的奇数和偶数
  46. 给定两个有序数组和一个指定的sum值,从两个数组中各找一个数使得这两个数的和与指定的sum值相差最小
  47. 随机产生字母和数字的字符串
  48. 找出10万以内的亲和数
  49. 给定一个数组,其中一个元素只出现一次,其余所有的元素都出现3次,找出这个只出现一次的数
  50. 用位运算交换两个数,不使用任何类型的额外变量
  51. 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于所有偶数的前面
  52. 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:”4″不能在第三位,”3″与”5″不能相连。
  53. 在一个字符串中找到第一个只出现一次的字符
  54. 找出缺失的一个数
  55. 找出两个有序数组中的共同元素
  56. 合并两个有序整数数组并去除其中的重复元素
  57. 随机产生由特殊字符,大小写字母以及数字组成的字符串,且每种字符都至少出现一次
  58. 打印所有可能的括号组合
  59. 判断一个字符串中的字符是否都只出现一次
  60. 寻找丑数
  61. 按字节截取字符串
  62. 3个线程依次打印递增的数字(二)
  63. 使用多线程统计1到一千万之间有多少个素数
  64. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
  65. 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
  66. 使用Executor求出10000个随机数据中的top 100
  67. 给定一个无序整数数组,找出第K个最小的数字
  68. 已知一个正整数N,问从1~N-1中任选出三个数,他们的最小公倍数最大可以为多少?
  69. 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。
  70. 找出没有被放入数组的那2个数
  71. 求解所有可能的数字集合,使用Stack实现
  72. 在数组中查找两个和为指定数值的数
  73. 计算有多少种爬楼梯的方式(递归)
  74. 计算有多少种爬楼梯的方式(非递归)
  75. [Leetcode] 3Sum
  76. [Leetcode] Two Sum
  77. [Leetcode] 4Sum
  78. [Leetcode] Regular Expression Matching
  79. [Leetcode] Container With Most Water
  80. [Leetcode] Triangle
  81. [Leetcode] Remove Duplicates from Sorted Array
  82. [Leetcode] Spiral Matrix
  83. [Leetcode] Longest Substring Without Repeating Characters
  84. [Leetcode] Maximum Subarray
  85. [Leetcode] Pascal’s Triangle II
  86. [Leetcode] Single Number
  87. [Leetcode] Spiral Matrix II
  88. [Leetcode] [Leetcode] Maximum Product Subarray
  89. [Leetcode] Combinations (采用位掩码实现)
  90. [Leetcode] Set Matrix Zeroes
  91. 找出正整数组合的最小数
  92. 找出连续自然数的个数及其区间
  93. 三个线程轮流打印递增的数字(使用Lock和Condition实现)
  94. 三个线程轮流打印递增的数字(使用AtomicInteger实现)
  95. 三个线程轮流打印递增的数字(使用Semaphore实现)
  96. 5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(穷举法)
  97. 5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(回溯法)
  98. 5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(十进制转三进制法)
  99. 输入一个正整数X,在等式 1 2 3 4 5 6 7 8 9 = X左边的数字之间添加+号或者-号,使得等式成立
  100. 解数独

更多例子请访问http://thecodesample.com/

你可能感兴趣的:(java,算法,面试,上机题)