- 博客(18)
- 收藏
- 关注
原创 约瑟夫环问题
0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yuan-quan-zhong...
2020-03-25 11:53:10 136
原创 排序算法-插入排序
将arr[n]数组看作两个数组,其中一个有序,一个无序。开始时,有序数组只包含arr[0],无序数组为arr[1]-arr[n-1]。从无序数组中取出一个元素arr[1],在有序数组中寻找它合适的位置,然后进行插入,形成新的有序数组。时间复杂度O(n^2)空间复杂度O(1)稳定算法分步解析: //逐步推导 //第一轮结果{3,17,25,14} ...
2020-03-21 20:28:57 109
原创 排序算法-简单选择排序
1、arr[0]-arr[n-1]的数组中选择一个最小值min,并与arr[0]的元素进行交换2、arr[1]-arr[n-1]的数组中选择最小值min,并与arr[1]的元素进行交换…以此类推,每次在(i+1)-(arr.length-1)之间选择最小值,总共进行arr.length-1次时间复杂度:O(n^2)空间复杂度O(1)不稳定算法(如果在原序列中,a在b的前面,那么在排序过...
2020-03-21 20:23:11 125
原创 排序算法-冒泡排序
冒泡排序思想:序列从前向后,依次比较元素大小,如果比后面的元素大,则进行交换。从而实现将大的元素沉到数组最后。优化:在一次排序过程中如果没有发生任何交换,则认为数组为有序数组,可以提前结束。复杂度:平均时间复杂度为O(n^2)最坏时间复杂度O(n^2)空间复杂度O(1)稳定算法分步过程: //第一趟排序将最大的元素交换到最后 for(int i =0...
2020-03-21 19:56:44 94
原创 1000!的阶乘末尾有多少个零
求1000!的结果中有几个0方法1:5、10、15、20、25(5^2)、30、40…,依次统计出现因子5的出现次数 。末尾有几个零,就是10^k,分解后可以得到2^k * 5^k,这样我们只需要求在1000!中出现的数,能够被多少2或者多少5整除就可以了。public static int FindZero(int n){ int sum = 0; for(int i = 5;...
2020-03-18 14:54:21 3535
原创 剑指Offer-正则表达式的匹配
请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zhen...
2020-02-29 12:00:47 89
原创 剑指Offer-剪绳子问题
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。来源:力扣(LeetCode)链接:https://leetcode-cn.com/p...
2020-02-27 20:04:44 205
转载 Java IO流实现文件分类
文件分类如果你是一个项目经理,所带产品命名为A_日期_文件名 和B_日期_文件名 两种,由于文件众多,你需要从一个文件夹中对这些文件进行按名称分类后放入新的文件夹中,如应分为A和B两个文件夹,并且A与B下又按日期进行分类。import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;i...
2020-01-06 10:59:09 386
转载 如何进行字符串翻转?
将String s = “abc123”转为“321cba”方法1StringBuffer str = new StringBuffer(s);str.reverse().toString();方法2将String先转为char型数组,再进行数组反转。char[] chars = s.toCharArray();String reverse = “”;for (int i = ch...
2019-11-08 11:47:18 334
转载 整数反转及溢出判断
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。实例1:输入: 123输出: 321示例 2:输入: -123输出: -321首先采用的反转思路:p=123/10=12···3p=12/10=1····2p...
2019-11-08 11:15:11 1863
原创 寻找字符串中没有重复元素字符串的最大长度值
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。滑动窗口利用HashSet,不能有重复的value值特性,当窗口右侧到达处存在重复值时,将左侧窗口向右移一格。class Solution { public int lengthOfLongestSubstrin...
2019-11-07 18:58:04 356
转载 java剑指offer 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。
版权声明:本文为CSDN博主「IDEA_TEYU_1112」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_41901915/article/details/90700092...
2019-08-27 17:08:35 221
转载 java 输入两个链表,找出它们的第一个公共结点
很不好意思的是,这道题我连题目的真正意思都没看懂。。。。。。记录一下别人写的方法。方法1:两个链表连起来遍历。
2019-08-02 16:13:09 224
原创 java 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。很惭愧这道题我看了一上午也没看懂这到底是怎么写的。总感觉这个程序结束的莫名其妙。错点1:在递归程序中,该层程序return后会返回上层递归程序并继续向下执行==这点一开始一直没转过弯来,问了别人讲了才明白。难点:二叉搜索树直接中序遍历便可以直接得到按序排列的链表。但是建立双向...
2019-08-02 12:05:40 205
原创 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
剑指offer:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)这道题的简单思路就是每遍历一个节点后将其值在target中减掉。题目中的路径要求我理解的是,这个路径必须从树的根节点出发,经过向下的子节点一直到没有值位置为止。首先在方法外定义了...
2019-07-31 20:46:51 1607 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人