算法问题
文章平均质量分 74
我韩金龙可不是傻瓜!
这个作者很懒,什么都没留下…
展开
-
超级码力初赛第二场 区间异或(初识线段树)
超级码力初赛-第二场-第二题-区间异或(初识线段树)当初看到题目一脸懵逼,后来通过博客查看各大神的题解才知道这题需要用到线段树,经典模板题。题目的意思我还是从别人的代码读懂的。题目如下截图:我来为小白讲解一下题目的意思:就是给定一个数组【1,2,3,4,5】,然后给定多个左右区间,一个左右区间用一个1X4数组表示,比如给的一个左右区间是【1,2,3,5】,即其中的左区间为12,右区间为35,左区间表示num数组中的第一个数到第二个数,即【1,2】,右区间同理,即【3,4,5】。题目所说的区间区间原创 2020-09-02 11:19:07 · 190 阅读 · 0 评论 -
超级码力初赛第一场第四题 —— 对称前后缀
超级码力初赛第一场第四题 —— 对称前后缀 20-9-1补充上上篇博客,这题题目的例子出的也不是很好。我来解释一下题目的权值含义:每个字符串的权值是从端到端的回文字符的个数。例如“aa”,权值为2,“aba”,权值为3,“aaa”,权值也为3,“abcba”,权值为5,“abdfba”,权值为2。解答 其实这道题是比较简单的动态规划题目,只需遍历每一个字串即可,对于每一个长度大于1字串(长度为1的字串默认权值为1),如果该字串的首字符等于尾字符,则有权值,其权值取决于去掉首尾字符的字串权值,原创 2020-09-01 14:05:58 · 130 阅读 · 0 评论 -
超级码力第一场-第三题-大楼间穿梭 动态规划 单调栈
(补充上篇)超级码力-第三题-大楼间穿梭 动态规划 单调栈hexo博客:blog.little-star.top周日-晴-过得跟昨天差不多-今天也参赛还是没进前300-下周还有两次机会-明天师弟师妹军训我们要开始做实践周项目。提示:题目中“用蛛丝移动到右侧k栋建筑中第一栋比当前位置高的大楼”,应该改为大于等于当前位置的大楼。单调栈解答这题的时候用到了一个解题界常说的数据结构——单调栈,即元素只能按单调递增或单调递减的顺序进栈或出栈。在这里的应用就是可以记录蜘蛛侠使用蛛丝在当前位置能跳到的最远位原创 2020-08-30 22:09:10 · 127 阅读 · 0 评论 -
超级码力在线编程大赛20200829
超级码力在线编程大赛20200829附上hexo博客地址:blog.little-star.top菜鸡去参赛只答出了两道题,而且是最简单的两道,没进前300,分享一下我的答案。大三第一天,周六,天气晴,一天待图书馆,图书馆没什么人,挺安静的。晚上回宿舍,写篇东西记录一下。树木规划题目我就直接截图了。解答类似贪心的思想,第一棵树肯定要,第一个棵树的坐标加上美观间隔d就是第二棵树的最近坐标,中间的树都需要删除。这么简单我还要做差不多半小时。public static int treePla原创 2020-08-29 20:59:20 · 154 阅读 · 0 评论 -
20 有效的括号 Java
leetcode20 有效的括号题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。算法思路法一:这种方法比较容易理解,只要不断从字符串中用空字符串“”替换“()”,"{}","[]"即可,直到不能替换时判断剩余字符串是否为空,为空则匹配。法二:使用栈来实现,遍历字符串的字符,遇到左括号就将右括号入栈,遇到右括号就将原创 2020-07-30 16:13:13 · 160 阅读 · 0 评论 -
14 最长公共前缀 Java
leetcode14 最长公共前缀题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。算法思路此处我采用纵向搜索的方法,对字符串数组的每一列进行比较,直到比较长度到达某个最短字符串或者遇到不相同字符。代码实现public class Solution { public static void main(String args[]){ String[] strs = {"qwerewqr", "qwertydafdf","qwe原创 2020-07-28 15:22:21 · 97 阅读 · 0 评论 -
13 罗马数字转整数 Java
leetcode13 罗马数字转整数题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVI原创 2020-07-27 16:23:42 · 43 阅读 · 0 评论 -
9 回文数 Java
leetcode9 回文数题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。算法思路通过对这个数的后半部分与前半部分进行比较来确定这个数是否是回文数。比如:3214342:321与243比较,不是。321123:321与321比较,是。3541453:354与354比较,是。代码实现public class Solution { public static void main(String args[]){ System原创 2020-07-26 15:29:15 · 133 阅读 · 0 评论 -
7 整数反转 c++
leetcode7 整数反转题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意: 如果反转后整数溢出那么就返回 0。算法思路使用一个64位的long long类型来存储结果整数,避免反转后结果溢出报错,最后判断反转后整数与INT_MAX和INT_MIN进行比较即可。代码实现#include<iostream>using namespace std;int reverse(int x);int main(){ cout <&原创 2020-07-24 15:37:52 · 637 阅读 · 0 评论 -
2 两数之和 c++
LeetCode2 两数之和问题描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。将这两个数相加起来,返回一个新的链表来表示它们的和。假设除了数字 0 之外,这两个数都不会以 0 开头。算法思路从两个链表的表头元素开始逐个相加,设立一个进位标志,直到遍历完两个链表的所有元素且进位标志为0时结束。即结束的条件为: ! ( L1 || L2 || carry)代码实现#include<iostream&原创 2020-07-23 15:54:32 · 294 阅读 · 0 评论 -
35 搜索插入位置 c++
leetcode35 搜索插入位置问题描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。算法思路使用二分法进行查找。假设插入位置为pos,则有nums[pos - 1] < target <= nums[pos]。代码实现#include<vector>#include<iostream>using namespace std;int searc原创 2020-07-17 11:10:47 · 256 阅读 · 0 评论