汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石圆柱,在一根圆柱上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根圆柱上。并且规定,在小圆盘上不能放大圆盘,在三根圆柱之间一次只能移动一个圆盘。
解题思路:
public class Main {
public static void move(char pos1,char pos2) {
System.out.print(pos1+"->"+pos2+" ");
}
public static void hanota(int n,char pos1,char pos2,char pos3){
if(n == 1) {
move(pos1,pos3);//终止条件
return;
}else{
hanota(n-1,pos1,pos3,pos2);
move(pos1,pos3);
hanota(n-1,pos2,pos1,pos3);
}
}
public static void main(String[] args) {
hanota(64,'a','b','c');
System.out.println();
}
}
解题思路:使用for循环嵌套遍历数组,找到对应目标值时输出下标
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]
实现:
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i=0;i<nums.length;i++){
for(int j = i+1 ; j < nums.length ;j++){
if(nums[i] + nums[j] == target){
return new int[]{
i,j};//找到目标值输出下标
}
}
}
return null;//未找到目标值,返回null
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
解题思路:
法1:循环嵌套逐个遍历计数,输出出现次数最多的数
法2:先将数组内数字按照大小顺序排序;建立 i , j 同时访问数组,
j = i + len / 2 ;此时如果 i = j 的值说明i和j中间的数字出现次数最多
示例 1:
输入:[1,2,5,9,5,9,5,5,5]
输出:5
示例 2:
输入:[3,2]
输出:-1
示例 3:
输入:[2,2,1,1,1,2,2]
输出:2
实现:
class Solution {
public int majorityElement(int[] nums) {
int len = nums.length;
Arrays.sort(nums);//数组排序
for(int i = 0;i <= len/2;i++) {
for(int j = i+len/2; j < len;j++) {
if(nums[i] == nums[j]) {
return nums[i];
}
}
}
return -1;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-majority-element-lcci