
随笔
Fly_Fly_Zhang
初学java
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
随笔-字符串相乘(按位相乘法)
题目:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数...原创 2019-02-14 00:50:13 · 2335 阅读 · 1 评论 -
随笔-寻找重复数(快慢指针,二分查找)
题目:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) ...原创 2019-01-01 11:01:54 · 1976 阅读 · 0 评论 -
随笔-最短回文串
题目:给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。示例 1:输入: “aacecaaa”输出: “aaacecaaa”示例 2:输入: “abcd”输出: “dcbabcd”思路:当字符串前面与后面不一样时,分为两种情况,一种是开头就不一样,那么直接加到sb就好,另一种是开头一样,中间不一样,那么这样也不是回文串;这时...原创 2019-01-01 11:38:03 · 375 阅读 · 0 评论 -
随笔-两整数之和
题目:不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1思路:异或为两个数无进位相加;相与左移为两个数进位;常规解法:class Solution { public int getSum(int a, int b) {...原创 2019-01-02 09:21:57 · 233 阅读 · 0 评论 -
随笔-扁平化多级双向链表
题目:您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。示例:输入:1—2---3—4---5—6–NULL|7—8---9—10–NULL|11–12–NULL输出:1-2-3-7-8...原创 2019-01-03 11:24:40 · 397 阅读 · 0 评论 -
随笔-相对名次
给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。原创 2019-01-24 00:39:44 · 307 阅读 · 0 评论 -
随笔-反转字符串2(翻转前k个)
给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。原创 2019-01-24 02:12:01 · 1147 阅读 · 0 评论 -
随笔-最大连续1的个数
题目:给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。思路:O(n) 解法,设置两个变量,一个记录最大连续1的个数;一个记录当前统计1的个数;进阶:如果数据量足够海量时,我们应...原创 2019-01-14 10:20:11 · 267 阅读 · 2 评论 -
随笔-如何判断一个数是否是2的n次方O(1)算法
题目: 如何判断一个数是否是2的n次方,要求时间复杂度为O(1);思路:本题考察的是位运算,尤其是对二进制的理解;当一个数为2的n 次方时,整个二进制数,只有他本位是1 其他位为0,如果我们给这个数减一,那么本位变为0 其他位全部变成1;我们可以通过&运算, 如果为0即为2的n次方; 本题暂不讨论n为分数(既浮点数)的情况;例: 我们通过8来进行距离 他是2的3次方...原创 2019-01-18 22:50:30 · 1314 阅读 · 2 评论 -
随笔-数组加一(整型数组)
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路:...原创 2018-12-25 11:09:46 · 695 阅读 · 0 评论 -
随笔-旋转链表
题目:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4原创 2018-12-24 21:25:27 · 170 阅读 · 0 评论 -
随笔-判断数组中是否存在重复元素
题目:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,...原创 2018-12-12 09:16:28 · 1682 阅读 · 0 评论 -
随笔-数组中两个不同元素的比较
题目:给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。示例 1:输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2:输入: nums = [1,0,1,1], k = 1, t = 2输出: true示例 3:...原创 2018-12-12 10:10:34 · 823 阅读 · 0 评论 -
随笔-移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路:主要有几个临界点,因为leetcode上的链表题,所有的头结点都算值节点,所以暂时将它当头结点使用,去除其他节点的val值之后,在判断它是不是val;/** * Definit...原创 2018-12-28 17:40:58 · 289 阅读 · 0 评论 -
随笔-左旋字符串
题目:左旋字符串思路:利用substring方法;两个str相加,从n位置开始,从n+len结束; 常规解法是,将字符串反转,然后0-n反转一次,n-len 反转一次substringpublic class Solution { public String LeftRotateString(String str,int n) { if(str.length()==...原创 2018-12-18 12:19:25 · 217 阅读 · 0 评论 -
随笔-不用加减乘除做加法
题目:不用加减乘除做加法我第一次做没想出来,膜拜大神帖思路:首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相加: 5-101,7-111 第一...转载 2018-12-18 14:56:51 · 155 阅读 · 0 评论 -
随笔-搜索插入位置
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路:采...原创 2018-12-24 12:27:45 · 152 阅读 · 0 评论 -
随笔-反转链表
题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路:pre作为反转后的头结点,curNext作为老节点的头节点常规版本/** * Def原创 2018-12-29 17:14:23 · 150 阅读 · 0 评论 -
随笔-后缀表达式求和(巧妙解法)
题目:后缀表达式求和思路:遇见数字直接出栈,遇见运算符号,用异常代替判断。处理异常时出两个元素,进行运算并将结果入栈;import java.util.Stack;public class Solution { public int evalRPN(String[] tokens) { Stack<Integer> stack = new Stack&lt...原创 2018-12-19 09:45:05 · 672 阅读 · 0 评论 -
随笔-找出数组中第K大的值(快速排序,堆排序实现)
题目: 找出数组中第K大的值,要求对数组不能进行排序,时间复杂度为O(nlog2k)快速排序实现思路:这个链接为 快速排序的原理(从小到大排序) 如果不懂快排建议先看此链接, 题目的要求是找第K大的数,那么我们将快速排序转换为从大到小排序进行分析。 找第k大的数,其实就是找角标k-1的数, 当par 大于k-1 时,那么par的左边有par个大的数 所以在左边进行查找;当par小于k-1...原创 2019-01-19 00:51:36 · 1325 阅读 · 1 评论 -
随笔-反转字符串中的单词三
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。原创 2019-01-25 01:22:16 · 315 阅读 · 0 评论 -
随笔-通配符匹配
题目:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出:...原创 2019-02-15 01:41:35 · 369 阅读 · 0 评论 -
随笔-给定一个链表,两两交换其中相邻的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路:这是一个简单的结点交换问题,唯一要注意的是首次交换后的头结点也进行了变化,所以我们需要单独进行处理;还有就是关于循环的限制条件,只要余下链表有两个以上的结...原创 2019-02-08 20:51:01 · 3101 阅读 · 0 评论 -
随笔-每k个节点反转链表(高效解法)
题目:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1...原创 2019-02-08 23:04:42 · 5125 阅读 · 1 评论 -
随笔-用ArrayList实现求交集/并集/差集
题目:a {1,2,3,4} ---- b {3,4,5,6} 并集:{1,2,3,3,4,4,5,6} 交集{3,4} 差集:a与b的差集{1,2}public class ArrayListDemo { /* * @Description : 本质为两个集合的合并 * @param arrayList1 * ...原创 2019-02-21 20:02:08 · 1536 阅读 · 1 评论 -
随笔-pow(x,n)
题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32...原创 2019-02-16 16:48:10 · 262 阅读 · 0 评论 -
随笔-寻找两个有序数组的中位数(几种不同时间复杂度解法/大白话易理解)
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)...原创 2019-01-31 02:24:10 · 1226 阅读 · 0 评论 -
随笔-下一个排列(二分查找实现)
题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路:我们应该清楚的是,如果相邻的元素,左边大于等于右...原创 2019-02-11 01:47:38 · 224 阅读 · 0 评论 -
随笔- 缺失的第一个正数(O(n)解法)
题目:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。O(n)解法思路:如果数组正好是1-nums.length的正整数,那么最小遗漏的正整数就是数组长...原创 2019-02-12 01:13:55 · 258 阅读 · 0 评论 -
随笔-无重复元素的最长子串(移动滑块解法)
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke...原创 2019-01-28 23:21:17 · 250 阅读 · 0 评论 -
随笔-合并K个排序链表
题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6思路:创建一个新表头,然后将所有链表元素按照大小加入到新的链表中;代码实现:/** * Definition for s...原创 2019-02-03 00:07:09 · 131 阅读 · 0 评论 -
随笔-字符串的排列(巧妙解法-判断 s2 是否包含 s1 的排列)
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。原创 2019-01-25 03:06:33 · 7721 阅读 · 3 评论 -
随笔-最短无序连续子数组
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。原创 2019-01-25 23:43:26 · 218 阅读 · 0 评论 -
随笔-连续子数组最大平均数
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。原创 2019-01-26 01:39:19 · 1941 阅读 · 0 评论 -
随笔-验证回文子串二(最多删除一个字符判断)
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。原创 2019-01-27 01:04:46 · 1087 阅读 · 0 评论 -
随笔-最长回文子串(Longest Palindromic Substring)——三种时间复杂度的解法
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”方法一:暴力解法;采用滑动窗口,先对最长的字符子串进行判断,下来对长度减一的几条子串进行判断;依此类推进行比对;时间复杂度:O(n3)代码实现:cl...原创 2019-02-01 01:25:23 · 2239 阅读 · 0 评论 -
随笔-最长连续递增序列
题目:给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。注意:数组长度不会超过...原创 2019-01-27 22:56:41 · 307 阅读 · 0 评论 -
随笔- 最接近的三数之和(Leetcode16)
题目:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:三个数首先用一个数确定基准,采用双...原创 2019-02-02 00:33:49 · 233 阅读 · 0 评论 -
随笔-七进制数
题目:给定一个整数,将其转化为7进制,并以字符串形式输出。示例 1:输入: 100输出: “202”示例 2:输入: -7输出: “-10”注意: 输入范围是 [-1e7, 1e7] 。思路:首先要分正负,用boolean来进行标记。 不管多少进制,其算法都是余数为n进制数,然后在除以n进制,以此循环直到num小于n。class Solution { public Str...原创 2019-01-23 02:04:28 · 667 阅读 · 0 评论 -
随笔-实现strStr() (找到字符串子串)
题目:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = ...原创 2018-12-23 14:55:54 · 521 阅读 · 0 评论