3 83年老蒜头

尚未进行身份认证

我要认证

看看世界有多大!!!

等级
TA的排名 6w+

Java集合:ArrayList

直接上正菜,先看接口public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{}接口的解释通常都会出现在接口源码的解释说明的第一行。AbstractList抽象类: 抽象方法+已实现方法,看看就好List: 方法接口RandomAccess: List 实现该标记接口表示

2020-07-11 17:10:32

17:机器人的运动范围

机器人的运动范围存在m行n列的矩阵,一个机器人从(0,0)开始,可以向上、下、左、右走,但是不能进行行坐标和列坐标的数位之和大于k的格子,例如(23,43)的数位之和为 2+3+4+3=12,求机器人能到达多少格子?public class Offer18 { public static void main(String[] args) { System.out.println(movingCount(4,4,4)); } public static int m

2020-07-11 13:16:43

16:矩阵中的路径

矩阵中的路径设计一个函数,用来判断矩阵中是否存在一条包含字符串的路径public class Offer17 { public static void main(String[] args) { char[][] data= { {'a','s','d'}, {'z','x','c'}, {'q','w','e'}, }; char[] temp = new String("sxw")

2020-07-11 00:03:28

Java集合:Iterable接口

直入主题:先看下相关接口及JDK给出的解释Iterable接口://实现此接口允许对象成为“ for-each循环”语句的目标public interface Iterable<T> { //return an Iterator. Iterator<T> iterator(); //给每个元素执行给定的操作,直到处理完所有元素或该操作引发异常为止。除非额外实现该方法 default void forEach(Consumer<? s

2020-07-09 23:41:12

15:旋转数组的最小数字

题目:旋转数组的最小数字一个递增排序数组{1,2,3,4,5},将数组起始往后的若干数据挪到数组的结尾,例如:{3,4,5,1,2,},那生成的数组为原数组的旋转数组之一思路:用二分查找特例:{0,1,1,1,1}生成的数组{1,0,1,1,1,}和{1,1,1,0,1}这种情况只能使用遍历数组的方式public class Offer16 { public static void main(String[] args) { int[] arr = {1, 0,1 , 1, 1}

2020-07-09 21:32:27

14:青蛙台阶问题

青蛙台阶问题:青蛙一次能走1个或2个台阶,n个台阶有几种走法?public class Offer14 { public static void main(String[] args) { System.out.println(frogDo(8)); System.out.println(frogDo2(8)); } /** * 当只有一阶台阶,只有一种走法;当有两阶台阶,有两种走法; * 当台阶数n>2时,走法数关于台阶的函数为f(

2020-07-08 12:16:22

13:求斐波那契数列的第n项

求斐波那契数列的第n项public class Offer13 { /** * 递归方式:n过大,会发生栈溢出 */ public static int fibonacci1(int n){ if(n==0)return 0; if(n==1)return 1; return fibonacci1(n-1)+fibonacci1(n-2); } /** * 循环方式 */ public stati

2020-07-07 21:50:23

12:使用两个栈实现队列

使用两个栈实现队列队列内存在appendTail(),deleteHead(),栈一和栈二,实现appendTail()-队列尾部插入节点和deleteHead()-队列头删除节点功能栈:先进后出 队列:先进先出public class Offer12 {}class Queue{ /** * 情况一:如果stack2为空,则直接压栈到stack1 * 情况二:如果stack2不为空,需要把stack2内的元素压倒stack1,再把新数据压倒stack1

2020-07-06 22:49:48

11:二叉树的下个节点

二叉树的下一个节点给定一颗二叉树和其中一个节点,如何找出中序遍历序列的下一个节点?树节点有三个指针,左子树,右子树,父节点中序遍历顺序:左-根-右public class Offer11 { public static TreeNode2 getNextNode(TreeNode2 node){ //如果节点存在右子树,那么他的下个节点为下个右子树的最左节点 if(node.right!=null){ node = node.right;

2020-07-05 16:12:29

10:重建二叉树

题目:重建二叉树输入二叉树的前序遍历和中序遍历重构二叉树,树表示方式为链表前序遍历:1 2 4 5 3 6 7 ,根-左-右 ,根节点:7,左子树:2 4 5,右子树:3 6 7中序遍历:4 2 5 1 6 3 7 ,左-根-右 ,根节点:7,左子树:4 2 5,右子树:6 3 7public class Offer10 { public static void main(String[] args) { int[] preorder = {1,2,4,5,3,6,7};

2020-07-05 15:24:58

09:逆序打印一个链表

逆序打印一个链表用一个栈结构或者一个数组可以,只要保证“先进后出”的准则即可public class Offer09 { public static void main(String[] args) { Node node1 = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); Node node4 = new Node(4); Node node5

2020-07-03 23:16:04

08:字符串替换空格

题目:替换空格实现一个函数,存在字符串hello world!!!,将字符串内的空格字符替换为’%20’。先对空格个数进行计数,得到适当大小的字符数组,接着将原本数组从后向前替换到新数组中。public class Offer08 { public static void main(String[] args) { String string = "hello world! !"; System.out.println(replaceBlank(string))

2020-07-02 22:23:05

07:从一个二维数组中查找一个数

题目:从一个二维数组中查找一个数数组要求:从左到右,从上到小依次递增的矩形二维数组思路:我们从矩阵的右上角开始查找,若该位置的数值小于目标值,列数减一;若数值大于目标值,行数加一,后续重复。public class Offer07 { public static void main(String[] args) { int[][] arr = { {1, 2, 8, 9}, {2, 4, 9, 12},

2020-07-01 23:37:44

06:不修改数组找出重复的数字

不修改数组找出重复的数字要求:在一个长度为n+1的数组,数组内值为1~n,不能修改原本数组思路:使用分治思维,在一个长度为n+1的数组,数组内值为1~n的情况下,必定存在数据重复情况。我们不在数组上做文章,将焦点聚集在1-n的数值上。将数值1-n分为两部分[1,(n+1)/2],[(n+1)/2+1,n],统计两部分数值在数组中出现的次数,若大于数值的个数,则必定重复,后续重复即可。例如:数组[1,2,3,4,5,3],数值为1-5,我们将数值分为[1,2,3]和[4,5],统计[1,2,3]在数组

2020-06-30 23:13:00

05:数组中重复的数字

数组中重复的数字题目要求:有一个长度为n的数组,数组内数值为0~n-1,找出其中重复的一个值。第一反应:先把数组从小到大排序,再从数组开头两两比较,相同则重复。第二反应:用另一个数组,将原数组遍历,数值为下标,填到新数组的相应位置,若该坐标下已存在数值,则重复。第三思路:从数组的0下标开始,比较0下标的值是否为0,不为0则将数值作为下标m,将下标m与下标0的数值比较,若数值相等则重复,不同则互换数值,后续重复操作public class Offer05 { public s

2020-06-29 22:05:58

Java并发:ThreadLocal

本文章在于简要介绍ThreadLocal的作用要点一: ThreadLocal类内部存在ThreadLocalMap静态内部类,ThreadLocalMap本质上为定制化的HashMap。要点二: Thread类存在两个ThreadLocalMap类型的变量,threadLocals 和inheritableThreadLocals ,默认值为nullpublicclass Thread implements Runnable { ThreadLocal.ThreadLocalMap thr

2020-06-28 14:56:53

04:单例模式

题目:写一个single模式饱汉式: 类加载时就会创建类实例public class Offer04 { private Offer04() { } private final static Offer04 instance = new Offer04(); public static Offer04 getInstance(){ return instance; }懒汉式: 在使用时创建类实例,容易造成线程问题public class Offer04

2020-06-28 14:20:05

03:赋值运算符函数

赋值运算符函数:题目要求:类中定义方法,方法接受参数,为类中变量赋值注意点:1.方法参数的引用不可变,要用final修饰2. 参数是否为null或与this相等,是则返回thisfinal修饰符:1. 修饰引用:基本数据类型:值无法改变;数据类型:引用指向地址不可变2. 修饰方法:不可被重写3. 修饰类:不可被继承4. 修饰方法参数:方法参数本质上为传值或者传引用,功能与修饰引用一样public class Offer03 { private String data; pu

2020-06-28 14:06:53

02:倒数链表第k个数值

倒数链表第k个数值注意事项:1.head不为null2.k>0,k<链表的长度方法采用双指针方式public class Offer02 { public static void main(String[] args) { //创建一个链表 ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(2); ListNode node3 = new L

2020-06-27 21:23:47

01:字符串转整数

字符串转整数注意点:需将字符串的前端空格去除首字符可以为正号,负号或者直接为数字字符后续字符需要为数字字符数值越界问题 public static int StringToInteger(String str){ //1.去除前后空格 str = str.trim(); if (str==null||str.length()==0)return -1; int index = 0; int sign =

2020-06-26 23:52:49

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。