剑指Offer
饼盐
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 06. 从尾到头打印链表
题目链接:从尾到头打印链表先统计元素个数,再从头到尾遍历链表,从尾到头给元素赋值即可。这个题只要求实现打印,并不要求实质上进行链表的翻转!!/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public int原创 2020-09-17 22:55:47 · 96 阅读 · 0 评论 -
剑指Offer 05. 替换空格
题目链接:替换空格因为在Java中String是不可变的,所以Offer书本上的原地扩容机制并不合适。利用可变的字符串类型StringBuilder遍历一遍并存储结果即可。class Solution { public String replaceSpace(String s) { if(s == null || s.length() == 0) return s; StringBuilder res = new StringBuilder();原创 2020-09-17 22:36:39 · 91 阅读 · 0 评论 -
剑指Offer 4. 二维数组中的查找
题目链接:二维数组中的查找解题思路:关于数组的查找问题,数组元素有序情况下,首先要看一下是否可以用二分来做。这个题是一个行、列分别有序的二维数组,所以行头列尾(右上角元素)和行尾列头(左下角元素)都可以将整个二维数组分成两部分。基于这两个元素进行查找范围的缩小。以右上角元素为例,当target小于它时,我们可以判断target一定不会在当前列了(因为当前列其他元素更大),所以继续判断它左面的元素和target的大小即可···当判断到元素4,target>4,所以此时不能向左走了(左面的元素更原创 2020-09-16 22:59:13 · 77 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树重建二叉树由先序序列和中序序列重建二叉树,基本的思路便是先序序列可以确定每个父节点,而中序序列可以确定每个父节点对应的左右子树。然后再分别确定左子树的左右子树…右子树的左右子树…递归完成建树!但是需要注意的是,前序序列的待重建(遍历)部分和中序序列的戴重建(遍历)部分要一一对应好,因此需要记录一下每个序列中待重构子序列的始末位置。class Solution { HashMap<Integer, Integer> hash;//存储元素在中序原创 2020-09-08 16:20:28 · 58 阅读 · 0 评论 -
剑指Offer 3. 数组中重复的数字
剑指Offer 3. 数组中重复的数字题目链接数组中重复的数字题目描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。Input:{2, 3, 1, 0, 2, 5, 3}Output:2或3解题思路1. 计数法一看这个题要求重复的数字,首先想到的就是用计数法,找到一个个数大于1的就可以返回结果了。class Solution { pu原创 2020-09-04 10:52:39 · 84 阅读 · 0 评论