
算法和数据结构
yytoo2
专业打杂
展开
-
机器人的运动范围 的三种解法
题目:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例:输入:m = 2, n = 3, k = 1输出:3来源:力扣(LeetCod原创 2020-08-28 23:36:31 · 460 阅读 · 0 评论 -
四则运算 不含小数
题目描述:输入: 字符串格式的算术表达式,如: “3+2*{1+2*[-4/(8-6)+7]}”, 数字部分无小数输出: 计算结果思路: 使用两个栈, 一个保存运算符, 一个保存数字这个题目主要是各类特殊情况需要考虑比较多java代码实现:import java.util.*;@SuppressWarnings("unchecked")public class Main{ public static void main(String[] args){ Scanne原创 2020-08-23 15:05:14 · 389 阅读 · 0 评论 -
购物单 与 01背包
牛客网试题地址:https://www.nowcoder.com/practice/f9c6f980eeec43ef85be20755ddbeaf4?tpId=37&&tqId=21239&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking输入描述:输入的第 1 行,为两个正整数,用一个空格隔开:N m(其中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数。)从第原创 2020-08-21 12:21:58 · 465 阅读 · 0 评论 -
单词距离与双游标
题目:有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?示例:输入:words = [“I”,“am”,“a”,“student”,“from”,“a”,“university”,“in”,“a”,“city”], word1 = “a”, word2 = “student”输出:1这个题用暴力法会超时-.-改用双游标定位: int lastIndex1 = -1;原创 2020-08-14 12:22:50 · 289 阅读 · 0 评论 -
字典序排数 与dfs遍历N叉树
题目如下:给定一个整数 n, 返回从 1 到 n 的字典顺序。例如,给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。首先观察数字的排列规则, 会发现这是一个N叉树的前序遍历.子节点和父节点的关系: children = parent*10+i (i =1,2,3…)需要判断: 节点所属数字不能大于n第一层子节点不包含0, 可以考虑单独处理.可以考虑使原创 2020-08-14 11:17:10 · 2516 阅读 · 0 评论 -
按字符串末尾的数字排序
题目如下:给出的字符串结构是前边是字母、后边为数字,例如wew0145,要求给出一组数据,按照后边的数字从小到大排序。输入wr0068,lt01,qhy0027828,gh20425256,xj0033258,zmj00505562输出lt01,wr0068,qhy0027828,xj0033258,zmj00505562,gh20425256解答:public static void main(String[] args) { String[] strs = new St原创 2020-08-12 23:02:54 · 1269 阅读 · 0 评论 -
回文素数
主要是记一下回文和素数的定义:public static void main(String[] args) { int N = 9989900; while(true){ //找到符合条件的则跳出循环并打印 if(N == reverse(N) && isPrime(N)){ System.out.println(N); break;原创 2020-08-12 21:39:43 · 230 阅读 · 0 评论 -
无重复字符的最长子串 与 滑动窗口
题目描述如下:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。这一题用暴力算法遍历也可以, 但是时间会超过leetcode的要求.读题可以总结题目有如下特点:输出结果在原字符串中是连续排列的每次需要读取的只在头/尾部, 中间部分内容提供比较时用这时候考虑用滑动窗口的方式就可以显著地减少操作次数.代码如下:import java.util.*;public class demo { public static void main(String[] args)原创 2020-08-12 15:48:18 · 179 阅读 · 0 评论 -
括号匹配深度 与 栈的使用
牛客网这一题的题干如下:输入描述:输入包括一个合法的括号序列s,s长度length(2 ≤ length ≤ 50),序列中只包含’(‘和’)’。输出描述:输出一个正整数,即这个序列的深度。然后我们再来看下对于"合法的括号序列"的定义1、空串"“是一个合法的括号匹配序列2、如果"X"和"Y"都是合法的括号匹配序列,“XY"也是一个合法的括号匹配序列3、如果"X"是一个合法的括号匹配序列,那么”(X)“也是一个合法的括号匹配序列4、每个合法的括号序列都可以由以上规则生成。例如:原创 2020-08-11 22:21:31 · 326 阅读 · 0 评论 -
leetcode 38. 报数
这题题目读起来很拗口, 所以差评好多的样子2333题目的大意:n==1 输出是1n==2, 前一步, 输出的结果数字是由1个1组成的, 所以是11n==3, 前一步, 输出的结果数字是11, 由2个1组成, 所以是21n==4, 前一步, 输出的结果数字是21, 由1个2和1个1组成, 所以是1211n==5, 前一步, 输出是1211, 由1个1, 1个2, 和2个1组成...原创 2018-09-03 23:41:14 · 176 阅读 · 0 评论