
剑指offer
对剑指offer中的题复盘
琉清霜
快 乐 肥宅!!!
展开
-
49 把字符串转换成一个整数
把字符串转换成一个整数思路: 先处理符合位,将其保存起来。 再将字符串转为字符数组,通过ASC||检查其中是否有别的字符 。最后从左往右 读取 字符数组中的值public class Main { public int StrToInt(String str) { if (str==""|| str.length()==0) return 0; if ( ( str.charAt(0)=='+' ||str.charAt(0)=='-' )&&am原创 2021-04-16 21:25:49 · 118 阅读 · 0 评论 -
剑指 Offer 36. 二叉搜索树与双向链表
思路:搜索树转化为有序链表, 有序可以理解为运用中序遍历,即 将中序遍历的结果,进行链表的尾插操作public class Solution { private Node head ; private Node last ; public Node treeToDoublyList(Node root) { head = null; last = null; inorder(root); head.left =原创 2021-04-09 17:17:50 · 74 阅读 · 0 评论 -
p65 不用加减乘除做加法
求两数之和,要求不得在函数体内使用 + - * / 四则运算符合思路:通常我们是如何 计算 5 + 71.只做个位相加,不进位 (二进制中, 异或 ^ 效果等于个位相加不进位, 0加0为0,1加0为1 ,1加1为0)2.做进位运算 5+7 进位,进位的值为10 (二进制中,位运算左移相当于进位)3.将前两个结果加起来public class Solution { public int Add(int num1,int num2) { while(num2!=0){原创 2021-04-08 17:35:51 · 99 阅读 · 1 评论 -
p66 构建乘积数组
给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。思路: 先计算下三角的值,然后再计算上三角的值。下三角 计算公式for(int i=1;i<a.lenth;i++){ b[i] = b[i-1]*a[i-1] ;}上三角 计算公式for(int i = a.length-2;i>=原创 2021-04-08 15:47:07 · 112 阅读 · 0 评论 -
剑指offer 31 通过栈的压入、 判断弹出序列
例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。class Solution { private List<Integer> arrayToList(int[] array) { List<Integer> list = new ArrayList<>(array.length); for (int原创 2021-03-23 22:49:18 · 77 阅读 · 0 评论 -
左旋转字符串
字符序列S=”abcdef”,要求输出循环左移3位后的结果,即“defabc”。方法1: s.substring(begin,end);public class Solution { public String LeftRotateString(String str,int n) { if(n<0 || n>str.length()){ return ""; } if(n==0 || n==str.length(原创 2021-03-19 17:14:46 · 75 阅读 · 0 评论 -
11.旋转数组中最小的数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例1输入[3,4,5,1,2]返回值1思路:二分法通过二分法找到最小的数字。import java.util.ArrayList;public class Solution { public int minNumberInRotateArray(int [] array) {原创 2021-03-19 14:57:02 · 70 阅读 · 0 评论 -
Fibonacci 斐波那契
思路:循环public class Solution { public int Fibonacci(int n) { int preNum = 1; int prepreNum = 0; int res = 0; if( n==0){ return 0; } if(n==1){ return 1; } for原创 2021-03-17 17:24:12 · 86 阅读 · 0 评论 -
字符串-替换空格
思路:String.replace (char oldChar ,char newChar); 字符替换 public String replaceSpace (String s) { return s.replace(" ","%20"); }原创 2021-03-17 16:33:41 · 80 阅读 · 0 评论 -
二维数组查找
1.暴力搜索public boolean findNumberIn2DArray(int[][] matrix, int target) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return false; } int rows = matrix.length, columns = matrix[0].length; f原创 2021-03-17 16:25:41 · 95 阅读 · 0 评论 -
输入一个链表,输出该链表中倒数第k个结点。
public class Solution { public ListNode FindKthToTail(ListNode head,int k) { ListNode cur = head; int len = 0; while (cur!=null){ cur = cur.next; len ++; } if (len>k){ cur = head; .原创 2021-03-12 11:29:07 · 88 阅读 · 0 评论