
easy
文章平均质量分 74
puspos
这个作者很懒,什么都没留下…
展开
-
270. 最接近的二叉搜索树值
问题例子思路方法1二叉搜索树,考虑类似二分,减少操作方法2代码//方法1class Solution { private double dist=Double.MAX_VALUE; private int res=0; public int closestValue(TreeNode root, double target) { preOrder(root,target); return res; }原创 2020-05-13 11:06:59 · 301 阅读 · 0 评论 -
243. 最短单词距离
问题给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离。例子思路方法1方法2代码//方法1class Solution { public int shortestDistance(String[] words, String word1, String word2) { //初始距离要设置的足够远,若w1=0,w2=words.lenth,万一第一个就是w2 int w1=-words.len原创 2020-05-13 10:56:34 · 686 阅读 · 0 评论 -
266. 回文排列
问题给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。例子思路方法1奇数个的字符为1个或者0个方法2代码//方法1class Solution { public boolean canPermutePalindrome(String s) { int[] arr = new int[128]; for(int i=0;i<s.length(); i++) { char c =原创 2020-05-13 10:46:53 · 275 阅读 · 0 评论 -
168. Excel表列名称
问题给定一个正整数,返回它在 Excel 表中相对应的列名称。例子思路方法1两个关键点:一:A-Z==1-26,减了一,则就是从0开始了,0-25对应者’A’-‘Z’,就是标准的26进制了跟转换为10进制一样,区别是每次都让n-=1【得到第二个字母时可以看成对一个新的n进行convertToTitle操作。】二:n–,还是n-1?如果是n-1, (26-1)%2...原创 2020-05-08 16:14:44 · 134 阅读 · 0 评论 -
204. 计数质数
问题统计所有小于非负整数 n 的质数的数量。例子思路方法1质数的所有倍数都不是质数方法2代码//方法1class Solution { public int countPrimes(int n) { int[] arr = new int[n]; Arrays.fill(arr,1); for(int i...原创 2020-05-08 15:21:46 · 112 阅读 · 0 评论 -
299. 猜数字游戏
问题例子思路方法1方法2代码//方法1class Solution { public String getHint(String secret, String guess) { int n = 0;//公牛的数目 int nn = 0;//母牛的数目 int[] arr = new int[10]; ...原创 2020-05-08 09:59:04 · 175 阅读 · 0 评论 -
278. 第一个错误的版本
问题假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。你应该尽量减少对调用 API 的次数。返回true是错误的版本例子思路方法1方法2代码//方法1/* The isBadVersion ...原创 2020-05-08 09:16:25 · 150 阅读 · 0 评论 -
263. 丑数
问题丑数就是只包含质因数 2, 3, 5 的正整数。例子思路方法1<1为false不断除以2,3,5,如果最终结尾是1就为true,否则为false方法2代码//方法1class Solution { public boolean isUgly(int num) { if(num<1) return false; ...原创 2020-05-08 09:05:20 · 116 阅读 · 0 评论 -
258. 各位相加
问题给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?例子思路当<10时,直接返回否则:结果为1~9x=100a+10b+c=99a+9b+a+b+c=99a+9b+9d+fx=100a+10b+c=99a+9b+a+b+c=99a+9b+9d+fx=100a+10b+c=99a+9b+...原创 2020-05-07 18:09:07 · 125 阅读 · 0 评论 -
252. 会议室
问题给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei),请你判断一个人是否能够参加这里面的全部会议。例子思路什么时候能参加全部的会议?所有的会议时间不存在交集。只要存在交集就返回false方法1O(n2)O(n^2)O(n2)两个for循环,如果这个的时间与之前的会议们存在交集,就返回fal...原创 2020-03-24 18:42:40 · 388 阅读 · 1 评论 -
1071. 字符串的最大公因子
问题对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。例子思路方法1辗转相除法方法2代码//方法1class Solution { public String gcdOfStrings(Strin...原创 2020-03-22 11:05:23 · 120 阅读 · 0 评论 -
190. 颠倒二进制位
问题颠倒给定的 32 位无符号整数的二进制位。例子思路不考虑的方法把数字->二进制字符串,处理后,->数字,不可取,因为Integer.valueOf(s,2);不能识别负数,必须要s的第一位是’-'才能识别负数方法1把二进制的每一位取出来【(n>>i)&1 i=0~31,因为最开始i=0,为最后一位,最高位右移动31位变成最后一位】放在...原创 2020-03-18 20:52:11 · 199 阅读 · 0 评论 -
171. Excel表列序号
问题给定一个Excel表格中的列名称,返回其相应的列序号。例子思路26进制转10进制AA=1*26+1=27方法1方法2代码//方法1class Solution { public int titleToNumber(String s) { int res=0; for(int i=0; i<s.length();...原创 2020-03-18 15:56:10 · 118 阅读 · 0 评论 -
326. 3的幂
问题给定一个整数,写一个函数来判断它是否是 3 的幂次方。例子思路方法1方法2找到最大3次幂的数,看是否该数%n==0代码//方法1class Solution { public boolean isPowerOfThree(int n) { if(n<=0) return false; //3的幂,除了1,其他...原创 2020-03-18 15:39:30 · 118 阅读 · 0 评论 -
202. 快乐数
问题编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。例子思路方法1不断得到每位上数字的平方和,如果为1,返回true,否则如果已经出现则返回false方法2代码//方法1c...原创 2020-03-18 12:44:14 · 90 阅读 · 0 评论 -
412. Fizz Buzz
问题写一个程序,输出从 1 到 n 数字的字符串表示。如果 n 是3的倍数,输出“Fizz”;如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。。例子思路方法1方法2代码//方法1class Solution { public List<String> fizzBuzz(i...原创 2020-03-18 11:44:43 · 710 阅读 · 0 评论 -
557. 反转字符串中的单词 III
问题给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。例子思路方法1split 更优方法2用栈,不为" “就放到栈里,如果是” ",就把栈里的字符取出放入sb,就反过来的代码//方法1class Solution { public String reverseWords(String s) { ...原创 2020-03-18 11:29:34 · 98 阅读 · 0 评论 -
292. Nim 游戏
问题你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。例子思路方法1思路:归纳总结 我先手,由于都是聪明人,所以无论谁拿到固定的数字都是结果一样。我拿时有1~3个,我必胜我拿时有4个,无...原创 2020-03-18 11:11:20 · 118 阅读 · 0 评论 -
231. 2的幂
问题给定一个整数,编写一个函数来判断它是否是 2 的幂次方。例子思路方法1(2^n)&(2^n-1)==0方法2代码//方法1class Solution { public boolean isPowerOfTwo(int n) { if(n<=0) return false; return (n&...原创 2020-03-18 10:34:00 · 100 阅读 · 0 评论 -
371. 两整数之和
问题不使用运算符 + 和 - ,计算两整数 a 、b 之和例子思路方法1a+b的实现=a^b(无进位相加)+(a&b)<<1(进位),一直进行直到进位!=0【因为牵扯到负数,所以不能是进位>0就可以了】方法2代码//方法1 int n=a^b; int jin=(...原创 2020-03-18 10:23:13 · 164 阅读 · 0 评论 -
581. 最短无序连续子数组_【有最字,但不用dp】
问题给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。例子思路不用动态规划。我们将数组 nums排序,然后我们比较 nums 和 排序后的元素找到最左边和最右边不匹配的元素。它们之间的子数组就是要求的最短无序子数组。方法1方法2代码//方法1class Solu...原创 2020-03-16 21:25:53 · 161 阅读 · 0 评论 -
205. 同构字符串_290. 单词规律
问题给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身例子思路方法1将两个字符串中的字符都映射到第三方数字上,将所有字母初始都映射到 0。如果相同下标时,对应的数字不一样,说明不是,立即返回false...原创 2020-03-16 20:59:09 · 190 阅读 · 0 评论 -
219. 存在重复元素 II
问题给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k例子思路方法1方法2代码//方法1class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { ...原创 2020-03-16 11:58:58 · 104 阅读 · 0 评论 -
203. 移除链表元素
问题删除链表中等于给定值 val 的所有节点。例子思路两个指针,pre, now方法1方法2代码//方法1class Solution { public ListNode removeElements(ListNode head, int val) { ListNode hhead = new ListNode(-1); ...原创 2020-03-16 11:24:35 · 158 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组
问题给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2例子思路方法1map O(n) O(n)方法2双指针 O(n) O(1)代码//方法1class Solution { public int[] twoSum(int[...原创 2020-03-16 10:09:59 · 111 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
问题例子思路使用二叉树的特点:左子树<根节点<右子树方法1当做普通二叉树,同236题方法2当做二叉排序树,利用其特点代码//方法1 public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root==null || ...原创 2020-03-16 09:48:55 · 94 阅读 · 0 评论 -
108. Convert Sorted Array to Binary Search Tree [ 将有序数组转换为二叉搜索树]
描述Given an array where elements are sorted in ascending order, convert it to a height balanced BST.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of ...原创 2019-10-14 14:00:58 · 181 阅读 · 0 评论 -
119. Pascal's Triangle II [杨辉三角形2]
描述Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal’s triangle.Note that the row index starts from 0.给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k+1 行例子思路方法1递归:不使用其他临时变量...原创 2019-10-22 18:32:30 · 150 阅读 · 0 评论 -
107. 二叉树的层次遍历 II
问题给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例子思路方法1先层次遍历得到list,然后翻转方法2代码//方法1class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) ...原创 2020-03-15 23:01:51 · 89 阅读 · 0 评论 -
172. 阶乘后的零_十进制_八进制
问题给定一个整数 n,返回 n! 结果尾数中零的数量。例子思路十进制末尾有多少个 0 ,只需要给当前数乘以一个 10 就可以加一个 010是由2和5产生的,由于5更少,所以只需考虑5的个数即可设n=100,先看n中有多少个5的倍数,n/5,再看有多少25的倍数 n/25 【每隔25出现了2个5,所以每隔25还要多算一个】八进制把10换成8,把25->2...原创 2020-03-15 22:49:02 · 323 阅读 · 0 评论 -
面试题61. 扑克牌中的顺子
问题例子思路方法1先排序,计算0的个数,再计算缺少的个数,2,5缺少2个【5-2-1=2】,如果0的个数>=缺少的个数,则可以,否则不可以方法2遍历数组,如果重复直接返回false【用boolean数组,arr[n]表示该数是否已经出现】,获取最大值和最小值,max,minmax-min>5说明连起来大于5张牌,直接falsemax-min<=5...原创 2020-03-14 17:41:47 · 248 阅读 · 0 评论 -
107. Binary Tree Level Order Traversal II [二叉树的层次遍历 II]_剑指offer_面试题32 - II. 从上到下打印二叉树 II
描述Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root)一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右...原创 2019-10-11 14:42:18 · 192 阅读 · 0 评论 -
34. 查找某数在有序数组中的第一个和最后一个下标_剑指offer-面试题53 - I. 在排序数组中查找数字 I
描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。例子思路要求O(logn),所以只能时二分查找法,先找左边界,再找有右边界。左右边界不可能一个是-1,一个不是答案pythonclass Solutio...原创 2019-11-21 13:42:44 · 317 阅读 · 0 评论 -
191. 位1的个数_剑指offer_面试题15. 二进制中1的个数
问题编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数例子思路方法1 O(logn)方法2代码//方法1public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { ...原创 2020-03-12 21:02:58 · 83 阅读 · 0 评论 -
面试题65. 不用加减乘除做加法
问题写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。例子思路方法1a,b将+变成:进位的值 (a&b)<<1【左移一位,来表示进位】, 无进位相加的值 a^b,一直把两者相加,直到进位的值为013+9十进制第一次:无进位相加:13+9=12进位的值:10第二次:无进位相加:10+12=22进位...原创 2020-03-12 18:03:33 · 152 阅读 · 0 评论 -
268. 缺失数字_剑指offer_面试题53 - II
问题给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。例子思路方法1∑i=0i=ni−∑i=0i=n−1nums[i]\sum_{i=0}^{i=n}i-\sum_{i=0}^{i=n-1}nums[i]∑i=0i=ni−∑i=0i=n−1nums[i]方法2下标为0~n-1,在加上n,将其全部异或,再把数组所...原创 2020-03-11 20:36:25 · 141 阅读 · 0 评论 -
141. Linked List Cycle [环形链表]
描述Given a linked list, determine if it has a cycle in it.To represent a cycle in the given linked list, we use an integer pos which represents the position (0-indexed) in the linked list where tail...原创 2019-10-23 20:58:02 · 142 阅读 · 0 评论 -
100. 相同的树
问题给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的例子思路代码class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { //不能通过中序遍历得到数组进行比较来验证 //如:[1,1] [1,null,...原创 2020-03-08 22:30:07 · 88 阅读 · 0 评论 -
350. 两个数组的交集 II
问题给定两个数组,编写一个函数来计算它们的交集。例子思路map记录nums1中各元素出现的个数遍历num2,当元素在map.containsKey(ele) && map.get(n)>=1时,将list.add(ele) 并让map中k的值-1代码class Solution { public int[] intersect(int[] ...原创 2020-03-08 10:10:46 · 108 阅读 · 0 评论 -
349. 两个数组的交集
问题给定两个数组,编写一个函数来计算它们的交集。例子思路交集里每个元素是唯一的,所以使用set代码 Set<Integer> set = new HashSet<>(); Set<Integer> set2 = new HashSet<>(); for(int n:nu...原创 2020-03-08 09:37:33 · 112 阅读 · 0 评论