![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
offer
记录bug的假程序员
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。人直接傻了class Solution { public String replaceSpace(String s) { return s.replace(" ","%20"); }}原创 2021-10-06 23:19:03 · 54 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字这道题的思路很简单,最简单的思想就是遍历数组,寻找逆序;返回那个开始逆序的数字即可。实现的时候遇到的问题;1.刚开始写的时候数组越界,原因是没看清边界,把numbers[i]>numbers[i+1]改成numbers[i-1]>numbers[i],I从1开始即可解决问题;2.注意本来就是从大到小的顺序,打印第一个数字即可。居然空间复杂度只超越了12.6,我要去膜拜膜拜大佬们是怎么写的。class Solution { publi原创 2021-09-29 23:30:16 · 51 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找一开始想的是左上角开始但是左上角不管网上还是往右都是变大的没办法比较,所以只能选择左下角,或者右上角。不知道为啥从左上角报错,心态崩了。左下角可以。class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { int i = matrix.length - 1, j = 0; while(i >= 0 &&原创 2021-09-28 16:26:59 · 58 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
青蛙跳台阶问题这道题听说过很多次,思路是清楚地,就是青蛙跳台阶的方式是有,前n-1,和n-2这两种方式的总和,和求斐波那契数列之和的方法一样。我是怎么解决的?1.暴力递归:超时了。2.使用动态规划的思想,用一个数组实现,记录每个子状态的值。如果有0个或者一个台阶,则认为是只有一种跳的方式(零阶为什么是 0呢?不是很理解,只能根据题目描述倒着想)。用数组记录时注意数组的边界条件。0,1直接返回。attention:注意题目给出的条件,要膜上一个数字。最初报错的地方:数组越界,就是因为我没写如果原创 2021-09-28 11:10:26 · 55 阅读 · 0 评论 -
汉诺塔问题
汉诺塔问题解决方法该问题就是把除了最下面一层的盘子,上面的n-1个盘子当成一个整体这样一来问题就转化为有两个盘子,三个柱子的问题,第一步就是把上面的盘子放到中转的盘子上面第二步把最后一个盘子放到目标柱子上第三步,把中转柱子上面的盘子全部转移到目标柱子上package jianzhioffer;import java.util.Arrays;public class hannoi { public static void main(String[] args) {原创 2021-09-27 22:44:33 · 73 阅读 · 0 评论 -
70. 爬楼梯
来自LeetCode70:解决思路:这就是你一个类似fibonacci序列的式子,最后一次只能上一个台阶或者两个台阶,所以,f(n)=f(n-1)+f(n-2);只有一个台阶需要上时有一种上的方法。具体实施方法1:使用一个含有三个数组的动态数组:初始值是[0,0,1]数组不断更新迭代;第二个数赋值给第一个位置;第三个数赋值给第二个位置,第三个位置是前两个位置的数字之和。返回第三个位置上的数字即可。class Solution { public int climbStairs(in原创 2021-09-18 13:17:54 · 60 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面遇到题目就开始想能不能使用暴力求解,我真的太暴力了。。。本题看了别人的求解思路:利用两个指针,一个从数组头部开始,一个从数组尾部开始。如果前面的指针指向的奇数,那么指针的指向向后移动。如果后面的指针指向的是偶数,后面的指针向前移动。否则交换两个指针所指向的数字的位置。class Solution { //从头遍历到尾部,如果前面的是基数与尾部的交换 public int[] exchange(int[] nums) {原创 2021-09-18 08:23:57 · 66 阅读 · 0 评论 -
剑指 Offer 25. 合并两个排序的链表
剑指 Offer 25. 合并两个排序的链表这道题是前几天写的,复习一下解题思路:两个序列都是有序的。类似于用两个指针,谁的数小加入谁,知道有一个走到了尽头,就把另一个剩下的全部加入。实现细节,需要一个用于返回的指针 ListNode dum=new ListNode(0);设置一个当前指针cur=dum;两个列表都不是空时,判断那个列表的当前数字小,l1.val<=l2.val,则cur.next=l1;cur=cur.next;l1=l1.next; l2小也是这样;当有一个序列原创 2021-09-16 10:47:16 · 71 阅读 · 0 评论 -
剑指 Offer 31. 栈的压入、弹出序列
剑指 Offer 31. 栈的压入、弹出序列之前学校期末考试考过这个判断题,当时是会判断的,但是转化成代码大致思路是知道的但是具体细节考虑不清楚,还是看了评论大佬的解答,感觉自己确实需要多刷题啊,。解决思路:1.根据这道题所属的分类,使用栈实现的,所以需要一个临时放数组的栈结构,需要的其他变量:以输入数组为循环的下标变量,设置输出数组的下标变量,初始为0。2.如果栈是空的,或者栈顶元素不等于输入数组的当前元素,则从输入数组将该元素入栈。3.如果栈不空并且栈顶元素等于当前输出数组的元素,则输出数.原创 2021-09-15 22:22:55 · 66 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
剑指 Offer 30. 包含min函数的栈这道题为简单题;写之前思路还是非常清晰,由于才开始刷算法,并且使用刚开始使用Java所以可能对平台,和语法不太熟悉(无语)***思路:***使用两个栈完成,第一个栈,所有进来的数据直接入栈;第二个栈,第一个 数据先进来,之后进来的数据与栈顶的元素作比较,如果栈顶元素比新进来的大,新进来的元素不入栈,再次复制此时的栈顶元素(为了保持与第一个栈大大小相等,也保证了每次弹出一个元素,第二个栈的顶部都为该级别上的最小值。)class MinStack {原创 2021-09-15 00:00:49 · 57 阅读 · 0 评论