![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
诠释信仰
要保持自信的态度
展开
-
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。class Solution { //自己写的,通过了92/118个测试用例 public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0){ return ""; } String prefix = strs[0];原创 2020-08-13 19:29:58 · 126 阅读 · 0 评论 -
对角线遍历
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。class Solution { public int[] findDiagonalOrder(int[][] matrix) { // Check for empty matrices if (matrix == null || matrix.length == 0) { retu原创 2020-08-13 16:44:47 · 412 阅读 · 0 评论 -
零矩阵
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。class Solution { public void setZeroes(int[][] matrix) { boolean isFirstRowZero = false; boolean isFirstColumZero = false; for(int i = 0; i < matrix[0].length; i++){ if原创 2020-08-13 15:44:27 · 859 阅读 · 0 评论 -
旋转矩阵
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?class Solution { public void rotate(int[][] matrix) { int row = matrix.length; int culom = matrix[0].length; int[][] res = new int[row][culom];原创 2020-08-13 14:49:45 · 99 阅读 · 0 评论 -
合并区间
给出一个区间的集合,请合并所有重叠的区间。mport java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.Stack;public class Solution { public int[][] merge(int[][] intervals) {转载 2020-08-13 14:09:03 · 91 阅读 · 0 评论 -
搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。class Solution { public int searchInsert(int[] nums, int target) { if (nums == null || nums.length == 0){ return 0; } int left = 0, right =原创 2020-08-13 13:20:13 · 94 阅读 · 0 评论 -
寻找数组的中心索引
给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。class Solution { public int pivotIndex(int[] nums) { int sum = 0, leftSum = 0; for(int i = 0原创 2020-08-13 12:49:45 · 111 阅读 · 0 评论 -
面试题2:实现singleton模式
//饿汉式 class Singleton { //1,私有构造函数 private Singleton(){} //2,创建本类对象 private static Singleton s = new Singleton(); //3,对外提供公共的访问方法 public static Singleton getInstance() { return s; } public static void print() { System.原创 2020-08-12 21:12:49 · 88 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode l原创 2020-08-04 19:02:12 · 83 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]**/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public int[原创 2020-08-04 16:16:07 · 84 阅读 · 0 评论 -
剑指Offer面试题5:替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); i++){ if (原创 2020-08-04 15:16:38 · 99 阅读 · 0 评论 -
剑指Offer面试题4
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 targe原创 2020-08-04 14:38:40 · 82 阅读 · 0 评论