剑指offer刷题笔记
文章平均质量分 61
小玄ks
努力学习,迈进大厂
展开
-
剑指offer-之-字符串
剑指offer刷题笔记–字符串5.替换空格 难度:简单本题比较简单,整体思路是先定义一个StringBuffer类型的字符串,将字符串化为字符数组遍历一遍,当遇到空格时,将“%20”加入到新定义的字符串中,否则直接加入当前遍历到的字符即可。注意最后要将StringBuffer类型转化为String类型。class Solution { public String replaceSpace(String s) { StringBuffer res = new StringBu原创 2021-11-10 19:55:18 · 563 阅读 · 8 评论 -
剑指offer-之-哈希表
50.第一个只出现一次字符 难度:简单本题用哈希表可以很简便地解决,关键点在于key-value键值对类型是Character-Boolean。Character:对应每一个字符,Boolean:对应该字符是否只出现一次,若只出现一次为true,否则为flase。将每个字符存储到哈希表中后,再从原先字符串的顺序遍历,判断每个字符对应的value值,得到第一个只出现一次的字符。class Solution { public char firstUniqChar(String s) {原创 2021-11-08 18:07:39 · 901 阅读 · 6 评论 -
剑指offer-之-链表
6. 从尾到头打印链表 难度:简单本题要求从尾到头打印链表,输出格式为数组,我们可以通过递归到链表的最后一位再回溯将链表的节点值加入ArrayList中,再将它转化为数组即可。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Soluti原创 2021-11-06 11:53:19 · 281 阅读 · 16 评论 -
剑指offer之数组(3)
47. 礼物的最大价值 难度:中等本题典型的动态规划问题,我们创建一个二维数组dp来记录对grid数组遍历到的每一位的礼物的最大价值,值得一提的是我们创建的dp数组的行列都比grid数组多1,这是为了解决边界问题。class Solution { public int maxValue(int[][] grid) { int row = grid.length; int col = grid[0].length; int[][] dp = n原创 2021-11-05 11:59:33 · 105 阅读 · 4 评论 -
剑指offer之数组(2)
40. 最小的k个数 难度 :简单思路一:先将数组排序,再选前k个数输出即可。时间复杂度O(N*logN)思路二:题目只是要求将前k小的数字输出,并没有要求输出的顺序,因此我们可以基于快速排序将数组划分,只要将数组划分为最小的k个数字和其他数字即可。我们采用第二种方法。时间复杂度O(N)。class Solution { public int[] getLeastNumbers(int[] arr, int k) { if( k >= arr.length) re原创 2021-11-04 20:17:19 · 129 阅读 · 9 评论 -
剑指offer之数组(1)
剑指offer 刷题笔记–数组(1)3 . 数组中重复的数字 难度:简单题目规定长度为n的数组中所有元素的大小都在0~n-1这个范围内,所以查找重复元素的时候要充分利用这个条件。也就是说,在遍历数组的时候,我们将每个元素放到对应的数组下标中(如:nums[0]为2,那么我们就将0下标的元素与2下标的元素交换,此时nums[2]就为2),当遍历到一个下标为i的元素x(即x=nums[i]),并且nums[x] == x时,我们就找到了这个重复元素x。class Solution { publi原创 2021-11-03 19:22:17 · 125 阅读 · 8 评论