算法
或许没看到
吾语即法则 -----中二代码语录
展开
-
算法:一个优惠券有面额和到期时间两种属性,按照面额从大到小排列,如果面额相同,按照到期时间的从小到大的顺序排列
题目描述:一个优惠券有面额和到期时间两种属性,按照面额从大到小排列,如果面额相同,按照到期时间的从小到大的顺序排列;思路分析:使用Comparable接口,重写comparaTo方法...原创 2020-09-13 11:24:38 · 742 阅读 · 0 评论 -
算法:翻转二叉树
题目描述给定一颗二叉树,将其左右对称翻转思路分析翻转二叉树,就是将每个节点的左右子树都调换位置,记住是每个节点。只需要能遍历每一个节点就可以了,遍历时调换其左右节点就行。下面是4种方法前序遍历翻转中序遍历翻转后序遍历翻转层次遍历翻转代码/** * 翻转二叉树 */public class TreeFanzhuan { class TreeNode { int val = 0; TreeNode left = null;原创 2020-09-03 23:18:17 · 1132 阅读 · 0 评论 -
算法:大数相乘
题目描述:给定两个String,为超过long可表示范围思路分析:略。同大数相加代码:public class BigNumberMul { String mul(String num1 , String num2){ int[] num1_int; int[] num2_int; if (num1.length() >= num2.length() ) { num1_int =原创 2020-08-31 23:19:14 · 181 阅读 · 0 评论 -
算法:大数相加
题目描述:给定两个大于1000位长的字符串,计算他们作为数字进行相加(超过long的范围)思路分析:很常见的题目。思路1:使用java很容易,直接使用BigInteger进行相加思路2:借助于数组String转int数组 两个int数组末尾相加 存在超过10的数,进行进位代码package xyz.gsdn.qianFeng;import xyz.gsdn.utils.CollectionUtils;import java.math.BigInteger;.原创 2020-08-30 22:59:34 · 151 阅读 · 0 评论 -
算法:笔记草稿消除“(“ , “)“ 和 “<“
题目描述:薯队长写了一篇笔记草稿,请你帮忙输出最后内容。1.输入字符包括,"(",")"和"<"和其他字符。2.其他字符表示笔记内容。3.()之间表示注释内容,任何字符都无效。括号保证成对出现。4."<"表示退格,删去前面一个笔记内容字符。括号不受"<"影响。输入描述:输入一行字符串。长度<=10000.输出描述:输出一行字符串,表示最终的笔记内容。 输入例子1:...原创 2020-08-26 16:07:18 · 257 阅读 · 0 评论 -
算法:两数之和(优化)
题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [2,7]思路分析:简单来说暴力枚举,俩个for循环嵌套,就一个个试出来了。优雅一点,就知道数据结构的魅力了...(我原创 2020-08-06 23:40:17 · 466 阅读 · 0 评论 -
算法:奖学金
题目描述小v今年有n门课,每门都有考试,为了拿到奖学金,小v必须让自己的平均成绩至少为avg。每门课由平时成绩和考试成绩组成,满分为r。现在他知道每门课的平时成绩为ai ,若想让这门课的考试成绩多拿一分的话,小v要花bi 的时间复习,不复习的话当然就是0分。同时我们显然可以发现复习得再多也不会拿到超过满分的分数。为了拿到奖学金,小v至少要花多少时间复习。输入描述:第一行三个整数n,r,avg(n大于等于1小于等于1e5,r大于等于1小于等于1e9,avg大于等于1小于等于1e6),接下来n行,原创 2020-08-05 11:41:04 · 1556 阅读 · 0 评论 -
算法:二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路分析:三种方法暴力枚举:直接遍历二维数组 对每行都进行二分查找 优雅一点,选定数组左下角或右上角,这里选定右上角。从右上角开始遍历,如果相等就找到了,不等则继续判断此时的数比要查找的数大还是小:如果 当前数比要寻找的数 大,则列数减小(向左移); 如果 当前数比要寻找的数 小,则行数增大原创 2020-08-04 15:24:16 · 194 阅读 · 0 评论 -
算法:滑动窗口的最大值
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,原创 2020-08-04 11:19:13 · 349 阅读 · 0 评论 -
算法:矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 [abcesfcsadee]\begin{bmatrix} a & b & c &e \\ s & f & c & s \\ a & d & e& e\\ \end{bmatrix}\qua原创 2020-08-03 16:57:33 · 320 阅读 · 0 评论 -
算法:机器人的运动范围
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?原创 2020-08-02 19:15:53 · 184 阅读 · 0 评论 -
(代码+注释+动图+java)排序算法:冒泡,选择,插入,快排,归并,希尔
排序算法:冒泡,选择,插入,快排,归并,希尔冒泡排序外层循环总共比较数组长度次,内循环都是进行从头到尾(a.length-1-i )两两比较,将大数往后挪移(冒泡)。外层一次循环结束,就会将这时的最大数放入末尾 //(第1次是最大数放入数组倒数第一个位置) //(第2次是除最大数外最大数放入数组倒数第2个位置) //(第3次是除最大数次大数外 最大数 放入数组倒数第3个位置)......package so...原创 2020-06-30 20:23:37 · 201 阅读 · 0 评论