java计蒜客爬楼梯问题


爬楼梯本人用的逆推思想在最后一节往后退一步或者两步最终运用递归的思想做出

import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] m=new int[n+1];
        m[0]=0;
        if(n>0) {
        m[1]=1;
        }
        if(n>1) {
        m[2]=2;
        }
        if(n>2) {
        for(int i=3;i<n+1;i++) {
            m[i]=m[i-1]+m[i-2];
        }
        }
        System.out.println(m[n]);
    }
}

<think>嗯,用户让我提供一份完整的100题列表,包含答案、代码示例和考点解析。这看起来像是一个刚学习编程的新手,可能在准备面试或者考试,需要系统的复习资料。首先,我需要考虑用户的具体需求。他们可能希望涵盖常见的数据结构和算法题,比如数组、链表、树、动态规划等等,因为这些是面试中的常见考点。 接下来,我需要确定如何组织这100题。如果直接列出所有题目,回答可能会非常冗长,而且在一个对话中可能无法完整展示。所以可能需要先给出一个分类的大纲,然后针对每个分类举几个例子,最后再建议用户如何获取完整的列表。这样既满足了用户的初步需求,又不会让信息量过大导致阅读困难。 然后,考虑到用户可能需要答案和代码示例,应该确保每个示例题目的代码准确无误,并且用常见的编程语言比如Python或Java来写,因为这两种语言在面试中比较常用。此外,考点解析要简明扼要,指出该题目主要考察的知识点和解题思路。 另外,用户可能没有明确说明他们所处的学习阶段,所以需要覆盖不同难度的题目,从简单的数组操作到复杂的动态规划问题。同时,还要注意题目的多样性,确保每个分类都有足够的代表性题目。 可能还需要检查是否有版权问题,比如LeetCode的题目是否可以这样列出。为了避免侵权,应该使用一些经典的问题,或者对题目进行适当的改编,而不是直接复制题目描述。 最后,考虑到用户可能需要更多的资源,可以在回答中推荐一些相关的学习平台或书籍,比如LeetCode、剑指Offer、算法导论等,帮助他们进一步学习和练习。 总结下来,我的回答应该先给出一个结构化的分类和部分示例,然后说明完整列表的获取方式,并提供帮助用户自主学习的建议。这样既解决了用户当前的问题,又引导他们去深入寻找更多资源,同时避免了信息过载和法律风险。</think>以下是编程面试常见题型的分类大纲和部分示例(含答案和解析)。由于篇幅限制,这里提供部分代表性题目,完整100题列表可通过文末方式获取: --- ### **一、数组与字符串** **1. 两数之和** **题目**:找出数组中两数之和等于目标值的下标 **答案**: ```python def twoSum(nums, target): seen = {} for i, num in enumerate(nums): if target - num in seen: return [seen[target - num], i] seen[num] = i return [] ``` **考点**:哈希表优化查找 --- ### **二、链表** **2. 反转链表** **题目**:将单链表反转 **答案**: ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def reverseList(head): prev = None curr = head while curr: next_temp = curr.next curr.next = prev prev = curr curr = next_temp return prev ``` **考点**:指针操作、迭代/递归 --- ### **三、树与二叉树** **3. 二叉树的最大深度** **题目**:算二叉树的最大深度 **答案**: ```python def maxDepth(root): if not root: return 0 return 1 + max(maxDepth(root.left), maxDepth(root.right)) ``` **考点**:递归、DFS --- ### **四、动态规划** **4. 爬楼梯** **题目**:每次爬1或2阶,到第n阶有多少种方法? **答案**: ```python def climbStairs(n): if n <= 2: return n a, b = 1, 2 for _ in range(3, n+1): a, b = b, a + b return b ``` **考点**:状态转移方程、空间优化 --- ### **五、回溯算法** **5. 全排列** **题目**:生成数组的所有排列 **答案**: ```python def permute(nums): res = [] def backtrack(path, used): if len(path) == len(nums): res.append(path.copy()) return for i in range(len(nums)): if not used[i]: used[i] = True path.append(nums[i]) backtrack(path, used) path.pop() used[i] = False backtrack([], [False]*len(nums)) return res ``` **考点**:回溯框架、路径管理 --- ### **六、图论** **6. 岛屿数量** **题目**:算二维网格中的岛屿数量 **答案**: ```python def numIslands(grid): def dfs(i, j): if i < 0 or j < 0 or i >= len(grid) or j >= len(grid[0]) or grid[i][j] != '1': return grid[i][j] = '0' dfs(i+1, j) dfs(i-1, j) dfs(i, j+1) dfs(i, j-1) count = 0 for i in range(len(grid)): for j in range(len(grid[0])): if grid[i][j] == '1': dfs(i, j) count += 1 return count ``` **考点**:DFS/BFS遍历 --- ### **七、其他高频题型** - **滑动窗口**:最长无重复子串 - **堆/优先队列**:合并K个有序链表 - **位运算**:只出现一次的数字 - **设题**:LRU缓存 --- ### **获取完整列表** 完整100题(含答案、代码、解析)可通过以下方式获取: 1. **GitHub仓库**:搜索关键词如「LeetCode Solutions」 2. **经典书籍**:《剑指Offer》《算法导论》 3. **在线平台**:LeetCode、牛网按标签筛选高频题 如果需要具体题目或进一步解析,请说明具体方向(如动态规划/二叉树),我将提供针对性内容!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值