算法和数据结构
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 · 433 阅读 · 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 · 352 阅读 · 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 · 436 阅读 · 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 · 265 阅读 · 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 · 2498 阅读 · 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 · 1197 阅读 · 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 · 191 阅读 · 0 评论 -
无重复字符的最长子串 与 滑动窗口
题目描述如下: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 这一题用暴力算法遍历也可以, 但是时间会超过leetcode的要求. 读题可以总结题目有如下特点: 输出结果在原字符串中是连续排列的 每次需要读取的只在头/尾部, 中间部分内容提供比较时用 这时候考虑用滑动窗口的方式就可以显著地减少操作次数. 代码如下: import java.util.*; public class demo { public static void main(String[] args)原创 2020-08-12 15:48:18 · 157 阅读 · 0 评论 -
括号匹配深度 与 栈的使用
牛客网这一题的题干如下: 输入描述: 输入包括一个合法的括号序列s,s长度length(2 ≤ length ≤ 50),序列中只包含’(‘和’)’。 输出描述: 输出一个正整数,即这个序列的深度。 然后我们再来看下对于"合法的括号序列"的定义 1、空串"“是一个合法的括号匹配序列 2、如果"X"和"Y"都是合法的括号匹配序列,“XY"也是一个合法的括号匹配序列 3、如果"X"是一个合法的括号匹配序列,那么”(X)“也是一个合法的括号匹配序列 4、每个合法的括号序列都可以由以上规则生成。 例如:原创 2020-08-11 22:21:31 · 297 阅读 · 0 评论 -
leetcode 38. 报数
这题题目读起来很拗口, 所以差评好多的样子2333 题目的大意: n==1 输出是1 n==2, 前一步, 输出的结果数字是由1个1组成的, 所以是11 n==3, 前一步, 输出的结果数字是11, 由2个1组成, 所以是21 n==4, 前一步, 输出的结果数字是21, 由1个2和1个1组成, 所以是1211 n==5, 前一步, 输出是1211, 由1个1, 1个2, 和2个1组成...原创 2018-09-03 23:41:14 · 161 阅读 · 0 评论