摘要:题意 给定一个无序单链表的头节点head,实现单链表的选择排序。 题解 按选择排序方法:每次从原链表找出最小值,从原链表删除,插入新的有序链表。 时间复杂度O(n^2) 额外空间复杂度O(1) 代码 public class Main { public static void main(String
阅读全文
摘要:题意 如题 题解 使用HashSet。 时间复杂度O(n),额外空间复杂度O(n)。 todo 使用选择排序也可以做。 代码
阅读全文
摘要:题目 如题 题解 步骤 1 找到链表中点, 2 翻转右半部分, 3 断开两侧,从两个链表头开始判断节点值相同。 4 然后再将右侧链表翻转回来 复杂度 时间O(n) 空间O(1) 代码
阅读全文
摘要:题目 给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数。 例子 arr=[1,2,100,4]。 开始时玩家A只能拿走1或4。如果玩家A拿走1,
阅读全文
摘要:题意 给定一个整形数组arr,返回排序后的相邻两数的最大差值。 题解 借助桶排序思想。 首先遍历一遍获得最大值max,最小值min。 设数组长度为len,则有len+1个桶,桶负责的区间大小是(max min)/len,数字num放入的桶id是(num min)/((max min)/len)即(n
阅读全文
摘要:题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2553 题意 n
阅读全文
摘要:正常数据库备份 备份:右键要备份的数据库 任务 备份 还原:右键数据库 还原数据库 问题1 “还原数据库备份时报错“介质集有2个介质簇,但只提供了1个。必须提供所有成员”的解决办法” 解决: 因为框中有几个备份路径就会备份到几处,并不是选中了什么就备份到哪。所以选别的备份路径要记得删掉其他路径,否则
阅读全文
摘要:题目链接 http://poj.org/problem?id=1426 题意 输入一个数n,输出任意一个 只含0、1且能被n整除的数m。保证n
阅读全文
摘要:题目 如题。 例: 题解 思路: 一直是按着(a[i]+a[j])+(i j)想后序的思路,不应该限制住自己,应该多考虑拆的方法。 正确思路是把a[i]+a[j]+i j拆成(a[i]+i)+(a[j] j)。 解法: 由于题目要求i
阅读全文
摘要:###题目 199. 二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 < / \ 2 3 < \ \ 5 4 < 来源:力扣(LeetCod
阅读全文
摘要:题目链接 https://www.nowcoder.com/questionTerminal/ff05d44dfdb04e1d83bdbdab320efbcb 题目 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 题解 关键是设计函数的
阅读全文
摘要:题目链接 http://poj.org/problem?id=3253 题目描述 大意:切长度为a的木条的花费是a,给定最终切好的n段各自的长度,问由原来的一根木条(长度为n段长度和)以最终总花费最小的方法切这n 1下,输出最小花费。(切的中间过程产生的子段不同,所以花费会不同) 例子: 输入: 3
阅读全文
摘要:题目链接 https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&tPage=1&rp=1&ru=/ta/coding interviews&qru=/ta/coding interv
阅读全文
摘要:题目 匹配% ,% 之间的字符串重复%前的num遍。 样例1: 3%acm 2%acm 输出: acmacmacmacmacm 样例2: 3%2%acm 输出: acmacmacmacmacm 题解 两个栈实现。 算是做出来,只是bug差一点调完。 主要还是要熟悉java栈的使用。 代码
阅读全文
摘要:题目 补充问题:数组只含0,1,2,对数组排序,要求时间复杂度O(n),额外空间复杂度O(1) 题解 维护三个变量,l,idx,r。左区间[0,l],中间区间[l+1,idx],右区间[idx+1,r]。 初始化l= 1,r=len,idx=0。idx用来遍历数组。 当arr[idx]=1,idx+
阅读全文
摘要:题目描述 定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N 1)时,如果arr[0]arr[mid 1],那么区间缩小为[l,mid 1]; (因为不满足上一条,试着画一画,可判定新的区间有局部最小) 如果不满足上一条,且arr[mid]mid 1) { r=mid
阅读全文
摘要:问题描述 给定数组,输出所有子数组的累积的最大值。 题解 以arr[i]结尾的最大累乘积=max{max arr[i],min arr[i],arr[i]},其中max、mini表示以arr[i 1]结尾的最大累乘积、最小累乘积。 最后再取一个最大值即可。 时间复杂度O(n) 代码
阅读全文
摘要:题目描述 给定 n 个整数组成的序列,将序列分割为 m 段,如何分割才能使这 m 段子序列的和的最大值达到最小? 题解 状态表示 dp[i][j]表示前i个元素划分j段 子序列和的最大值的最小值 状态转移 dp[i][j]=min{dp[i][j], max{dp[k][j 1],dp[i][1]
阅读全文
摘要:###题目 给定两个有序数组arr1和arr2,再给定一个整数k,返回所有的数中第k小的数。 ###题解 利用题目"在两个长度相等的排序数组中找到第上中位数"的函数 分类讨论 k < 1 || k > lenShort + lenLong,无。 k ⇐ lenShort,在两个数组前k个做二分。 k
阅读全文
摘要:题目描述 给定两个有序(升序)数组arr1和arr2,已知两个数组的长度都为N,求两个数组中所有数的上中位数。 根据例子,上中位数指若有两个中位数,则较小的那一个是上中位数。 题解 分类讨论。结合使用二分,两个数组分别维护l、r、mid指针。 arr1[mid1]=arr2[mid2],直接返回结果
阅读全文
摘要:题意 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整数k。实现一个调整链表的函数,将链表调整为左部分都是值小于k的节点,中间部分都是值等于k的节点,右部分都是值大于k的节点。 在左、中、右三个部分的内部也做顺序要求,要求每部分里的节点从左到右的顺序与原链表中节点的先后次序一致。
阅读全文
摘要:问题描述 Node类中的value是节点值,next指针和正常单链表中next指针的意义一样,都指向下一个节点,rand指针是Node类中新增的指针,这个指针可能指向链表中的任意一个节点,也可能指向null。 给定一个由Node节点类型组成的无环单链表的头节点head,请实现一个函数完成这个链表中所
阅读全文
摘要:题目描述 给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点。 题解 内部函数reverse实现链表beg到end的翻转,以及与l和r的连接。 外部函数reverseKNodes实现区间的移动(即四个实参的更新),以及整
阅读全文
摘要:题意 32位有符号整型num,返回该整数二进制数中1的个数。 题解 法一:循环次数等于位数 移位 补0右移 右移(负数时高位补1) 法二:循环次数等于1的个数 抹掉最右边的1 法三:循环次数等于1的个数 获得最右边的1 todo 平行算法待搞懂 代码(法一、二、三)
阅读全文
摘要:题目描述 从N个元素中随机抽取k个元素,但的k个数无法事先确定。 在实际应用中,往往会遇到很大数据流的情况。因此,我们无法先保存整个数据流然后再从中选取,而是期望有一种将数据流遍历一遍就得到所选取的元素,并且保证得到的元素是随机的算法。 特别地,此题元素为1 N。 解题思路 蓄水池算法。 1. 先选
阅读全文
摘要:Logback介绍 Logback的主要模块 logback access :与service容器集成,提供通过http访问日志的功能。即第三方软件可以通过这个模块来访问日志。 logback classic:Log4J的改良版,并完整实现了SLF4j API,可以很方便的更换成其他日志系统。 Lo
阅读全文
摘要:题目 给定数组arr和整数num,求数组的子数组中有多少个的满足“最大值减去最小值 maxQue = new LinkedList(); LinkedList minQue = new LinkedList(); int i = 0; int j = 0; while (i = arr[j]) {
阅读全文
摘要:问题描述 如题。 输入 栈12345 输出 栈54321 解题思路 用两个递归函数: 第一个可以将栈底元素弹出 第二个借助第一个可以实现栈逆序 代码
阅读全文
摘要:问题描述 字符串str,模式串exp。 必须保证str中无'.'和'星号'字符,并且exp中'星号'不出现在首位,且无连续两个'星号'。PS星号是字符只是暂时没找到markdown的星号转义字符。 '.'可以匹配任意一个字符,'星号'可以匹配0 多个星号前面的一个字符的情况。 输出可否匹配。 例:
阅读全文
摘要:问题描述 给定一个数组,找到每一个位置左边和右边离它最近的且值比它小的位置,返回一个二维数组表示每个位置对应的两个位置。 解题思路 使用单调栈,保证栈内元素从栈顶到栈底严格单调递减。 每个元素入出栈一次,时间复杂度O(n) 具体的,如果x位置被弹出,在栈中位于ta下面的位置的元素就是满足题意的左边元
阅读全文
摘要:问题描述 输入数组arr={4,3,5,4,3,3,6,7},窗口大小w=3,窗口由左向右移动,输出每个窗口最大值组成的数组。 解题思路 数据结构:使用LinkedList模拟双端队列,LinkedList底层是双向链表。 遍历一遍arr,时间复杂度O(n)。具体地, 队列队尾的位置对应的元素若不比
阅读全文
摘要:问题描述 给定一个字符串,输出把它全部切成回文子串的最小分割数。 例:str="ACDCDCDAD",输出2。 解题思路 DP 存储结构 dp数组dp[len+1],dp[i]表示子串str[i:len]至少需要切割几次,才能都切割成回文串。 对应的,循环从右至左进行。 注意 dp[i]的含义完全可
阅读全文
摘要:把DEM数据(.tif)获得栅格数据对应的经纬度及高程信息,存到地理数据库 一、预处理工作 栅格数据的合并——目的:将原始4张Dem(.tif)数据合并为一张Dem(.tif) https://wenku.baidu.com/view/26191ab5b8d528ea81c758f5f61fb736
阅读全文
摘要:问题描述 小和定义: 例如:数组s = [1, 3, 5, 2, 4, 6],在s[0]的左边小于或者等于s[0]的数的和为0,在s[1]的左边小于或等于s[1]的数的和为1,在s[2]的左边小于或等于s[1]的数的和为1+3=4……将所有位置的左边比它小或者等于的数的和相加起来就是小和。 s的小和
阅读全文
摘要:问题描述 输入 原字符串StrOrg,目标字符串StrTarget,插入、删除、替换的编辑代价ic,dc,rc。输出将原字符串编辑成目标字符串的最小代价。 解题思路 状态表示 dp[i][j]表示把strOrg[0:i]编辑成strTarget[0:j]的最小代价。 状态转移方程 从以下三种状态的取
阅读全文
摘要:问题描述 如题。 例:输入两个字符串 str1="1AB234",str2="1234EF" ,应输出最长公共子串"234". 解题思路 状态表示 dp[i][j]表示把str1[I]和str2[j]作为公共子串的最后一个字符,最长公共子串的长度。 最终,找到dp数组中的最大值及其位置,则可计算并获
阅读全文
摘要:题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1232 题目描述 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不
阅读全文
摘要:题目描述 给定arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,求组成aim的 方法数 。 解题思路 完全背包 和“求换钱的最少张数”的转移来的状态完全相同。 初始化不同 转移方程为:dp[i][j]=dp[i 1][j]+dp[
阅读全文
摘要:题目描述 给定arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,求组成aim的 最少货币数 。 解题思路 dp[i][j]表示只用第0到i种货币,凑成j元的最小货币张数。 初始化第一行 初始化中,无法凑成的初始化为Integer.
阅读全文
摘要:题目描述 输入无序数组arr,元素可正可负可0,再给整数k,求arr所有子数组中累加和为k的最长子数组长度。 解题思路 三个变量: sum为pos为0到i的所有元素的累加和; len为当前满足题意的最长子数组长度; map key为从arr最左边开始累加的过程中出现过的sum值,value表示sum
阅读全文
摘要:题目描述 给定两个串,输出最长公共子序列。 解题思路 维护dp[i][j],表示子串str1[0:i+1]与str2[0:j+1]的最长公共子序列长度。 由dp[][]右下角开始,找公共子序列。 代码
阅读全文
摘要:一 10个实体类 选择Integer 而不是int的原因 :当值为空时,int类型会自动为其初始化,这是我们不希望的。 二 配置Maven 目录结构: src/main/java:业务代码 src/main/resources:项目用到的资源文件,如Spring、Mybatis、日志的配置文件 sr
阅读全文
摘要:题目描述 一行N个位置1到N,机器人初始位置M,机器人可以往左/右走(只能在位置范围内),规定机器人必须走K步,最终到位置P。输入这四个参数,输出机器人可以走的方法数。 解题思路 DP 方法一:时间复杂度O(NK),空间复杂度O(NK) 方法二:时间复杂度O(NK),空间复杂度O(N) 方法一代码
阅读全文
摘要:题目描述 给定无序数组,每个值均为正数,再给定整数k。求arr中所有子数组中所有元素相加和为k的最长子数组长度。无则输出 1。 例: 输入 arr=[1,2,1,1,1],k=3 输出 3 解题思路 (时间复杂度O(N),空间复杂度O(1)) 维护指针l,r表示子数组区间。初始l=r=0,向右移动至
阅读全文