自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指offer JZ31 整数中1出现的次数

整数中1出现的次数输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数例如,1~13中包含1的数字有1、10、11、12、13因此共出现6次思路一遍历public int NumberOf1Between1AndN_Solution(int n) { //遍历,除以10取余,判断计数 int count = 0; for(int i=1;i<=n;i++){ int t = i; wh

2021-04-29 09:44:08 107

原创 剑指offer JZ30 连续子数组的最大和

连续子数组的最大和输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).输入[1,-2,3,10,-4,7,2,-5]输出18 (3,10,-4,7,2 )public int FindGreatestSumOfSubArray(int[] array) { if (array.length==0 || array==null) { return 0;

2021-04-28 22:09:58 86

原创 gradle版本与插件不匹配

gradle插件不匹配ERROR: Minimum supported Gradle version is 5.1.1. Current version is …原因是第一个文件的插件版本和第二个文件里面的gradle版本匹配其对应关系如下看着修改就好了使用本地gradle

2021-04-28 15:44:50 407

原创 解决gradle依赖库导致build慢的问题

解决gradle依赖库导致build慢的问题buildscript { repositories {// google()// jcenter() maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter

2021-04-28 14:54:50 140

原创 剑指offer JZ29 最小的K个数

最小的K个数给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组简单思路先排序、再取最小的k个数public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> list = new ArrayList<Integer

2021-04-27 20:33:06 95

原创 剑指offer JZ28 数组中出现次数超过一半的数字

数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。public int MoreThanHalfNum_Solution(int [] array) { if(array == null || array.length == 0)return 0; int preValue = arra

2021-04-25 22:37:05 95

原创 剑指offer JZ27字符串的排序

字符串的排序输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。char[] carr ; int k=0; public ArrayList<String> Permutation(String str) { ArrayList<String> list = new ArrayList<String>();

2021-04-23 23:17:21 83

原创 剑指offer JZ26 二叉搜索树与双向链表

二叉搜索树与双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。这个题要奖励一朵小红花,一次提交就通过!public TreeNode Convert(TreeNode pRootOfTree) { if(pRootOfTree == null) return null; TreeNode temp; //递归把左子树转换为双向链表,返回根节点,通过根节点找出最大的节点,让节点的右指针指向当前节点,当前节点的左指针指向该节点

2021-04-21 23:00:31 120

原创 剑指offer JZ25 复杂的链表

复杂的链表输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)我的思考:什么是深拷贝?浅拷贝:拷贝对象的地址,修改后会影响原对象的属性;深拷贝则不影响原属性值对于这个题目,意思就是不能通过改变指针来实现,需要创建节点遍历链表,获取节点值创建新节点随机指针怎么处理?代码及思路public RandomListNo

2021-04-20 23:57:29 97

原创 剑指offer JZ24 二叉树中和为某一值的路径

二叉树中和为某一值的路径输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。案例输入:{10,5,12,4,7},22输出:[[10,5,7],[10,12]]代码//思路:深度优先遍历,如果累加值大于目标值则切换,如果到了路径末尾仍达不到 则切换路径//怎么添加到队列?ArrayList<ArrayList<Integer>> res = new ArrayLis

2021-04-16 22:28:48 121

原创 剑指offer JZ23 二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)思路突破点序列满足前一部分均小于最后一个值,后一部分均大于最后一个值,可以用两个while循环进行遍历如果遍历结束时到了最后一个位置则说明满足,最后一个位置前移,递归判断public boolean VerifySquenceOfBST(int [] sequence) { /

2021-04-14 21:40:31 135

原创 剑指 offer JZ22 从上往下打印二叉树

从上往下打印二叉树从上往下打印出二叉树的每个节点,同层节点从左至右打印。代码public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<Integer>(); ArrayList<TreeNode> treelist = new ArrayList<TreeNode>();

2021-04-14 20:44:37 109

原创 剑指offer JZ20 包含min函数的栈

包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。代码public class Solution { Stack<Integer> stack = new Stack<Integer>();//栈需要泛型,不能是int Stack<Integer> minstack = new Stack<Integer>(); public void push(i

2021-04-14 20:15:21 76

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

栈的压入弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路序列A欲加入的元素如果与序列B第一个相等,那么就后移指针,在栈的为空的情况下继续判断是否相等否则入栈public boolean IsPopOrder(int [] pushA,i

2021-04-14 14:05:22 114

原创 剑指offer JZ19 顺时针打印数组

顺时针打印数组输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> list = new Array

2021-04-13 22:47:23 76

原创 剑指offer JZ18二叉树的镜像

二叉树的镜像操作给定的二叉树,将其变换为源二叉树的镜像。源二叉树8/ 6 10/ \ / 5 7 9 11镜像二叉树8/ 10 6/ \ / 11 9 7 5思路一(未通过)public TreeNode Mirror (TreeNode pRoot) { // write code here //思路,递归返回值左右调换 // 考虑处理左右子树为空和其中一个为空的情况 Tr

2021-04-11 21:50:57 116

原创 剑指offer JZ17 树的子结构

树的子结构输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)输入{8,8,#,9,#,2,#,5},{8,9,#,2}输出true思路突破点递归判断是否完全相同(根节点值相等、左子树、右子树分别相同),B是否为A的左子树,B是否为A的右子树...

2021-04-09 23:24:18 172

原创 剑指offer JZ15 反转链表

反转链表输入一个链表,反转链表后,输出新链表的表头。思路递归public ListNode ReverseList(ListNode head) { //递归返回的是当前节点,最终结果需要头结点,如果处理? //在递归函数外面定义 不好处理 //每次都返回头结点,处理当前节点的链接即可 if(head == null||head.next == null) return head; ListNode no

2021-04-06 17:33:09 86

原创 剑指offer JZ16 合并两个排序的链表

合并两个排序的链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路递归public ListNode Merge(ListNode list1,ListNode list2) { if(list1 == null) return list2; if(list2 == null) return list1; if(list1.val<=list2.val){ list1.nex

2021-04-06 17:11:10 72

原创 剑指offer JZ14 链表中第k个结点

链表中第k个结点输入一个链表,输出该链表中倒数第k个结点。如果该链表长度小于k,请返回空。思路让第一个指针先走到k的位置,再两两个指针一起走,当第一个指针到达最后一个位置的时候,第二个指针就是倒数第k个public ListNode FindKthToTail (ListNode pHead, int k) { if(pHead==null||k==0) return null; // write code here

2021-04-05 21:06:43 71

原创 剑指offer JZ13 调整数组顺序使奇数位于偶数前

调整数组顺序使奇数位于偶数前输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路方法一:创建一个新数组,遍历两次,第一次把奇数添加进去,第二次把偶数添加进去public int[] reOrderArray (int[] array) { // write code here int arr[] = new int[array.length];

2021-04-04 22:14:03 104

原创 剑指offer JZ12 数值的整数次方

数值的整数次方给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0思路方法一: 正数直接累乘exp次就好了,负数取倒数累乘-exp次public double Power(double base, int exp) { if(exp == 0) return 1.0; if(exp<0){ base = 1/base; exp = -exp;

2021-04-02 16:01:11 89

原创 剑指offer JZ47 求1+2+3+...+n

求1+2+3+…+n求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。狗血,太狗血了!思路分析不能用for、while ,我居然没想到递归,确实,用递归写这种简单求和确实没写过。递归大方向是没错的,但是要求不能使用if、else、switch、case、A?B:C。if(n == 1 ) return 1; 这条语句就要想办法替换掉了解题n >1 && (n += Sum_Solu

2021-04-02 09:43:51 98

原创 剑指offer JZ11二进制中1的个数

二进制中1的个数输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。思路一通过除2取余,将余数存到数组中,分别对正负数进行处理。比较繁琐,容易出错,遗漏特殊情况思路二把十进制看成二进制,通过位与和移位,判断每一位是否为1怎么取移位的结果?方式一:n&1 这样就能取出最后一位,再循环右移n>>=1 (只能用于正数),这里用n>>>1即可解决方式二:(n-1)&n 这个操作可以将n二进制数最右边的一个1转为0,循环操作知道为0。

2021-04-02 09:07:15 89

KNLP项目资源包,用于提供给KNLP用户下载

KNLP项目资源包,用于提供给KNLP用户下载

2022-04-02

空空如也

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

TA关注的人

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