自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 剑指offer-数组中只出现一次的数字(两个)(位运算)

1、异或运算法制:相同则取0,不同则取1一个数与0做异或,则还是这个数本身;2、题目3、题解class Solution { public int[] singleNumbers(int[] nums) { int x=0,y=0,n1=0,m=1; //第一遍遍历异或得到所求x,y的异或值 for(int num:nums){ n1= n1^num; } //m循环移位做与,得到第一个为1的二进制位

2021-09-13 10:22:03 179

原创 剑指 Offer 56 - II. 数组中数字出现的次数 II

题目:解题思路及代码解题思路1、将数组进行排序;2、双指针i= 0;j= 1;向右滑动循环逻辑:while循环,当j> nums.length时退出循环;当i,j指向的数值相等时,j++,指针右移;但不相等时,两种情况:找到(j-i == 1),此时又分为两种情况(case1和case2);未找到(j-i >1) 此时令i =j,j=j+1;窗口整体右移,重复判断;case1:只出现1次的数字为nums[i],此时,i=0;j=1,且nums[i]!= nums[.

2021-09-11 10:08:55 185

原创 笔试题总结-java

1、重载方法重载就是方法名称重复,加载参数不同。在一个Java类中,定义多个同名的方法,如果方法名相同,方法参数不同,包括参数的类型和个数都不同,叫做方法的重载。调用重载方法时,Java 编译器通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。方法的重载,既可以发生在普通方法上,也可以发生在构造方法上。方法的重载,既可以发生在同类中,也可以发生在父子类中。Java方法的重载:返回类型、修饰符可以相同,也可不

2021-08-29 21:20:29 334

原创 链表的头结点问题

题目描述:从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 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; } * }

2021-08-29 11:04:42 196

原创 笔试题总结-C语言

1、指针类pA=pC !=pB2、函数类strcpy() :函数将源字符串复制到缓冲区。没有指定要复制字符的具体数目!如果源字符串碰巧来自用户输入,且没有专门限制其大小,则有可能会造成缓冲区溢出! strcat() :函数非常类似于 strcpy(),它可以将一个字符串合并到缓冲区末尾。 sprintf()、vsprintf() :用来格式化文本和将其存入缓冲区的通用函数 可以看出来在对缓冲区进行写操作的时候都有可能导致内存溢出。3、数据类...

2021-08-27 18:58:51 74

原创 Spring学习笔记

Spring框架概述Spring框架四轻量级的开源的JaveEE框架轻量级:jar包体积和数量少,可独立使用开源:免费框架:简化开发,可解决企业应用开发的复杂性两个核心:IOC和AopIOP:控制反转,把创建对象的过程交给Spring管理Aop:面向切面,不修改源代码的情况下,进行功能添加|增强特点: -方便解耦,简化开发 - etcIOC容器IOC(控制反转),把对象的创建和对象之间的调用过程,交给Spring进行管理- 目的:耦合度降低依赖...

2021-08-16 16:37:58 78

原创 合并两个有序数组

class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int end = m+n-1; int p1 = m-1; int p2 = n-1; int temp; while(end >= 0){ if(p1 == -1) temp = nums2[p2--]; else if(p2==-1) .

2021-05-24 22:12:11 75

原创 Java - 多态

多态的转型

2021-04-07 09:30:17 140

原创 最长公共子序列

题目思路及代码最长公共子序列import java.util.*;public class Solution { /** * longest common subsequence * @param s1 string字符串 the string * @param s2 string字符串 the string * @return string字符串 */ public static String LCS(String s

2021-04-03 17:30:07 88

原创 java中库中常用的排序方法

1、Collections.sort(List <T> list)Collections对集合进行操作2、Arrays.sortArrays类对数组进行操作 T[ ]

2021-04-02 11:01:31 145

原创 leetcode 水域大小(DFS)

题目思路及代码import java.util.ArrayList;class Solution { public int[] pondSizes(int[][] land) { // 垂直 i+-1,j 水平 i,j+-1 //对角 左上 i-1,j-1 左下 i-1,j+1 右上 i-1,j-1 右下 i+1,j+1 ArrayList<Integer> save = new ArrayList<

2021-04-02 10:45:15 210

原创 剑指offer之顺时针打印矩阵

题目思路及代码import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList <Integer> result = new ArrayList<>(); if(matrix == null || matrix.length == 0|| matri

2021-04-01 22:22:18 56

原创 剑指offer之矩阵中的路径(递归,DFS,回溯)

题目思路及代码DFS和回溯入手点:1、主方法找到递归开始的第一个点,调用递归方法;2、递归方法中首先进行边界条件和是否能符合题目要求(本题中为是否与字符串中的第k个字符相同),若均满足,则该位置可访问,改变该位置的标记;3、判断是否到达结束条件,若否则按照规定的搜索方法进行下一个位置的查找;4、若按照规定的查找方法搜索完均未满足题目要求,则重新改变该位置标记,进行回溯。import java.util.*;public class Solution { /**

2021-04-01 21:39:12 79

原创 剑指offer之机器人的运动范围(递归,DFS)

题目思路及代码public class Solution { public int movingCount(int threshold, int rows, int cols) { if(threshold <0 || rows < 1 ||cols < 1) return 0; boolean[][] flag = new boolean[rows][cols]; //默认false return search (thre

2021-04-01 20:10:40 86

原创 剑指offer之丑数(动态规划)

题目思路及代码直接对丑数进行存储。将丑数数组中的数依次乘以2,3,5,将最小的数存入数组,并将乘 2 3 5的下标+1,后续最小的丑数应该从2 3 5对应下标的丑数乘2 3 5中产生。import java.lang.Math;public class Solution { public int GetUglyNumber_Solution(int index) { if( index <=0) return 0; int[] uglyNum

2021-04-01 12:00:41 78

原创 剑指offer之翻转字符串(null,空串,全是空格的非空串)

1、题目思路及代码先根据空格对字符串进行分割,然后对分割后的字符数组进行逆序拼接;注意空格的加法。特殊情况:字符串为空 String s;此时s为null,不具备任何属性,包括length;字符串为空 ,String s = "";长度为0;字符串全为空格,有几个空格长度就是多少。public class Solution { public String ReverseSentence(String str) { if (str == nu.

2021-03-31 00:10:18 88

原创 剑指offer之把字符串转换成整数

题目思路及代码1、1、不考虑正负号及特殊情况时:采用for循环从左到右依次乘10累加,并将结果依次乘10累加(不能根据字符串长度进行按位求幂累加,因为字符串长度可能会超过int类型的最大位数,求得过程本身就已越界)2、当字符串首位字符为'-'时,相减;为'+'或者首字母为数字时直接累加;3、当字符串首字符为除2中情况的其他字符时,则不为数字,返回0;判断依据:ASCII码中48~57为0到9十个阿拉伯数字。所以,当字符1要转换成数字1时,需要将字符1转换成ASCII码翻译出的

2021-03-30 11:17:37 124

原创 剑指offer之正则表达式匹配

题目思路代码import java.util.*;class Solution { public boolean isMatch(String A, String B) { int n = A.length(); int m = B.length(); boolean[][] f = new boolean[n + 1][m + 1]; for (int i = 0; i <= n; i++) { .

2021-03-30 09:24:14 196

原创 剑指offer之把数组排成最小的数

题目思路及代码1、字典序全排列import java.util.ArrayList;import java.util.*;import java.util.Arrays;public class Solution { public String PrintMinNumber(int [] numbers) { // method 1全排列解法 Arrays.sort(numbers); //String result

2021-03-29 11:47:37 76

原创 剑指offer之字符串的全排列

import java.util.ArrayList;import java.util.Collections;import java.util.Arrays;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList <String> result = new ArrayList<>(); if(str.length.

2021-03-29 09:58:40 81

原创 剑指offer之矩阵中的路径(深度优先搜索:DFS,递归)

题目思路代码import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param matrix string字符串 * @param rows int整型 * @param cols int整型 * @param str string字符串 * @retur..

2021-03-25 17:02:24 131

原创 包含min函数的栈(栈)

题目定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路辅助栈,设置数据栈和最小值栈,数据栈按普通栈的方式进行出栈入栈,最小值栈依次存入当前的最小值,栈顶元素永远是当前最小值。代码import java.util.Stack;public class Solution { Stack <Integer> data = new Stack <>(); Stack <Integer&g

2021-03-22 15:44:26 72

原创 剑指offer之 替换空格

问题请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解法1import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串

2021-03-21 21:19:52 67

原创 剑指offer之二维数组中的查找(二维数组)

问题在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路及代码1、暴力解法双层遍历//定义一个整型数组:3行4列int a[][] = new int[3][4];//获取行数---3行int lenY = a.length;//获取列数---4列int lenX = a[0].length;//二维数组可以看做是袁术为一维数...

2021-03-19 22:55:19 116

原创 剑指offer之链表的倒数第k个节点(双指针)

题目输入一个链表,输出该链表中倒数第k个结点。思路链表的倒数第k个节点+正数的长度等于链表总长度,因此,若让一个指针先走k步,另一个指针在此时与上一个节点同时开始走,则后起步的指针就走了从正数的长度也就是倒数第k个节点位置。代码import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { *

2021-03-19 22:27:08 116

原创 剑指offer之表示数值的字符串(正则表达式)

目录题目:思路:代码题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路:正则表达式^ 匹配输入字符串的开始位置代码import java.util.regex.Pattern;public class Solution { .

2021-03-19 22:06:12 101

原创 leetcode hot100之两数之和

问题给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法1 暴力求解(双层遍历,由于不重复可将第二层遍历的起始值设为第一层遍历的当前

2021-03-17 22:50:01 97

原创 剑指offer之最小的K个数(堆、排序、优先队列)

问题给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组。思路采用最大堆对数组进行存储,当堆中的长度大于k时,进行出堆,将剩余k个数据按要求返回。代码import java.util.ArrayList;import java.util.PriorityQueue;import java.util.Comparator;public class Solution

2021-03-17 21:18:34 88

原创 剑指offer之数据流中的中位数(数组、排序、堆)

问题描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解法1:无序数组+集合自带的排序方法采用无序数组进行插入存储,然后利用集合自带的排序方法进行排序,最后求得结果。import java.util.*;public class Solution {

2021-03-17 20:06:30 130

原创 Java的方法重载和重写及java注释

方法重载和方法重写重载:如果多个方法有相同的名字、不同的参数,便出现了重载。编译器根据方法根据参数类型与特定方法调用中所使用的值的类型进行匹配,找出正确的方法。要完整地描述一个方法,需要指定方法名及参数类型,这叫做方法的签名。返回类型不是方法签名的一部分,也就是说,不能有两个名字相同、参数类型相同却又不同返回类型的方法。重写:java注释块注释/** ..... */行注释 //...

2021-03-17 20:05:36 963

原创 剑指offer之重建二叉树(Arrays)(二叉树的遍历)

问题输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路1、根据前序遍历找到根节点;2、中序遍历中,根节点前的结点均为根节点的左子树结点且顺序为左子树中序遍历的结果;根节点后的结点均为根节点的右子树且为右子树中序遍历的结果;3、根据中序遍历确定左子树结点长度left,右子树结点长度right。则前序

2021-03-15 22:50:54 71

原创 剑指offer之扑克牌顺子(set)

1、题目LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去

2021-03-14 23:45:49 143

原创 剑指offer之和为S的连续整数序列

题目小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck返回值描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序思路及代码import java.util.Array

2021-03-09 22:31:35 78

原创 剑指offer之和为s的两个数字

题目输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。对应每个测试案例,输出两个数,小的先输出。思路数组为递增数组,可以采用双指针,第一个指针指向数组的第一个数字,第二个指针指向数组的最后一个数字,当两数相加大于S时,则最后一个指针前移;小于S时,则第一个指针后移;当两数之和等于S时,则两数乘积必定最小(和一定则差的绝对值越大乘积越小),将这两个数字直接输出。也可以将符合条件的乘积和数组保存下来,再进行判断。

2021-03-09 21:44:11 77

原创 剑指offer之二叉树的下一个结点(中序遍历)

中序遍历1、中序遍历根节点的左子树;2、访问根节点;3、中序遍历根节点的右子树;中序遍历结果:dbheiafcg问题描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路及代码三种情况:1、该结点有右子树,则下一结点为右子树中序遍历的最左节点;2、该结点无左子树&&父节点不为空{caseA:该节点为父节点的左节点,则下一节点为父节点;caseB:该结点为

2021-03-09 15:30:22 101

原创 剑指offer之 栈的压入、弹出序列

问题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的思路(辅助栈+双层循环)将压栈序列依次压入辅助栈temp,每次压栈时判断与出栈序列的第一个元素(记为目标元素)是否相同,若相同,则辅助栈出栈该元素,标记元素后移继续判断,重复压栈判断过程。若最后

2021-03-09 12:41:37 66

原创 剑指offer之数字在升序数组中出现的次数(二分)

public class Solution { public int GetNumberOfK(int [] array , int k) { if(array.length==0||k<array[0]||k>array[array.length-1]) return 0; //查找上界,最后一个k int low , high = 0; int first = 0,size = array.lengt

2021-03-09 00:01:05 86

原创 剑指offer之孩子们的游戏(圆圈中最后剩下的数)约瑟夫环问题

思路问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。我们知道第一个人(编号一定是(m-1)mod n) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m mod n的人开始):k k+1 k+2 ... n-2,n-1,0,1,2,... k-2并且从k开始报0。我们把他们的编号做一下转换:k --> 0k+1 --> 1k+2 --> 2......k-2 -

2021-03-08 00:02:10 134

原创 剑指offer之把二叉树打印成多行(队列)

思路:import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { ArrayList<ArrayList<Integer&

2021-03-07 17:27:53 68 1

原创 剑指offer之反转链表

/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { //空表或链表长度为1 if(head == null || head.next...

2021-03-06 20:19:03 57

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除