刷题
smile_study1
这个作者很懒,什么都没留下…
展开
-
中文数字与阿拉伯数字转换
package cn.utstarcom.idpvoice.util; /** * 工具类,用于将汉语的数字转换为阿拉伯数字 * @author utsc1243 * @date 2019年6月12日 */public class ChineseNumToArabicNumUtil { static char[] cnArr = new char [] {'一','二','三','四','五','六','七','八','九'}; static char[] chArr = new char转载 2020-07-08 14:54:02 · 442 阅读 · 0 评论 -
面试题43. 1~n 整数中 1 出现的次数
class Solution { public int countDigitOne(int n) { int ans = 0; int digit = 1; int high=n/10; int low = 0; int cur=n%10; while(high!=0||cur!=0){ if(cur==0) ans+=digit*high; el...原创 2020-07-03 17:21:24 · 1972 阅读 · 0 评论 -
多线程面试手撕题
按序打印我们提供了一个类:public class Foo {public void one() { print(“one”); }public void two() { print(“two”); }public void three() { print(“three”); }}三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 one() 方法线程 B 将会调用 two() 方法线程 C 将会调用 three() 方法请设计修改程序,以确保 two() 方法在 one.原创 2020-07-02 22:19:36 · 578 阅读 · 0 评论 -
二叉树公共祖先问题
1.如果是二叉搜索树的最近公共祖先问题剑指 Offer 68 - I. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4原创 2020-07-02 14:06:41 · 404 阅读 · 0 评论 -
二叉树前中后序遍历的迭代版本
前序public static void preOrderIteration(TreeNode head) { if (head == null) { return; } Stack<TreeNode> stack = new Stack<>(); stack.push(head); while (!stack.isEmpty()) { TreeNode node = stack.pop(); System.out.print(node.value + " "原创 2020-07-02 11:55:28 · 216 阅读 · 0 评论 -
byte dance
K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5/** * Definition for singly-li.原创 2020-07-01 19:46:47 · 1503 阅读 · 0 评论 -
二分查找法总结
二分查找不简单,Knuth 大佬(发明 KMP 算法的那位)都说二分查找:思路很简单,细节是魔鬼。很多人喜欢拿整型溢出的 bug 说事儿,但是二分查找真正的坑根本就不是那个细节问题,而是在于到底要给mid加一还是减一,while 里到底用<=还是<。二分查找框架int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = left +原创 2020-06-30 09:01:25 · 183 阅读 · 0 评论 -
leetcode股票题解
每天都有三种「选择」:买入、卖出、无操作,我们用 buy, sell, rest 表示这三种选择。但问题是,并不是每天都可以任意选择这三种选择的,因为 sell 必须在 buy 之后,buy 必须在 sell 之后。那么 rest 操作还应该分两种状态,一种是 buy 之后的 rest(持有了股票),一种是 sell 之后的 rest(没有持有股票)。而且别忘了,我们还有交易次数 k 的限制,就是说你 buy 还只能在 k > 0 的前提下操作。这个问题的「状态」有三个,第一个是天数,第二个是当前为原创 2020-06-29 16:11:42 · 298 阅读 · 0 评论 -
886. 可能的二分法
给定一组 N 人(编号为 1, 2, …, N), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。形式上,如果 dislikes[i] = [a, b],表示不允许将编号为 a 和 b 的人归入同一组。当可以用这种方法将每个人分进两组时,返回 true;否则返回 false。示例 1:输入:N = 4, dislikes = [[1,2],[1,3],[2,4]]输出:true解释:group1 [1,4], group2 [2,3]思路:将一组染色(原创 2020-06-28 22:05:56 · 142 阅读 · 0 评论 -
单词拆分
最简单的实现方法是用递归和回溯。为了找到解,我们可以检查字典单词中每一个单词的可能前缀,如果在字典中出现过,那么去掉这个前缀后剩余部分回归调用。同时,如果某次函数调用中发现整个字符串都已经被拆分且在字典中出现过了,函数就返回 true 。public class Solution { public boolean wordBreak(String s, List<String> wordDict) { return word_Break(s, new HashSet(w原创 2020-06-20 10:34:29 · 221 阅读 · 0 评论 -
背包问题
01背包有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。import java.util.Scanner;public class Main原创 2020-06-10 21:53:50 · 302 阅读 · 0 评论 -
LEETCODE DFS中等篇
1从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7思路:因为前序遍历为根左右。 中序遍历为左根右。所以前序遍历的第一个元素为重建的二叉树的根节点的值。遍历中序遍历,直到找到和根节点值相同的位置。则此元素左边的都是根节点的左子树的元素,右边原创 2020-05-11 17:40:01 · 107 阅读 · 0 评论 -
LEETCODE DFS基础篇(已完成)
1相同的树给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2 2 [1,2], [1,null,2]输出: false示例 3原创 2020-05-09 14:40:06 · 136 阅读 · 0 评论 -
LEETCODE每日打卡篇 5-8
221. 最大正方形在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路:`if (grid(i, j) == 1) { dp(i, j) = min(dp(i-1, j), dp(i, j-1), dp(i-1, j-1)) + 1;}...原创 2020-05-08 12:05:57 · 147 阅读 · 0 评论 -
LEETCODE动态规划中等篇
1523. 连续的子数组和给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。示例 1:输入: [23,2,4,6,7], k = 6输出: True解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。示例 2:输入: [23,2,6,4,7], k = ...原创 2020-05-08 11:51:46 · 210 阅读 · 1 评论 -
每日一题
23. 合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6解1利用K个指针指向链表的当前位置,每次循环找出最小值,复杂度O(KN)/** * Definiti...原创 2020-04-26 22:51:41 · 89 阅读 · 0 评论 -
LEETCODE字符串中等篇(已完成)
122. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路:利用递归思想,一个指针记录左边括号数,一个指针记录右边括号数,当右边大于左边时结束,当左边等于n时,若此时字符串长度小于2*n,则补齐)括...原创 2020-04-22 20:02:46 · 275 阅读 · 0 评论 -
leetcode打卡篇
#18. 字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符...原创 2020-04-21 15:09:45 · 119 阅读 · 0 评论 -
leetcode字符串篇(10题已完成)
简单1383. 赎金信给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:...原创 2020-04-19 14:33:07 · 494 阅读 · 0 评论 -
LEETCODE 数组hard难度
1128. 最长连续序列给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。...原创 2020-04-19 12:53:32 · 396 阅读 · 0 评论 -
LEETCODE打卡 dp篇
简单类型170. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4. ...原创 2020-04-19 12:39:41 · 228 阅读 · 0 评论 -
Leetcode打卡(10题已完成)
2020/4/18数组专题 中等难度1原创 2020-04-18 18:43:09 · 277 阅读 · 0 评论 -
leetcod打卡(10题已完成)
2020/4/17明天开始每日打卡计划原创 2020-04-17 21:41:33 · 306 阅读 · 0 评论