随笔分类 -  Leetcode刷题记录

摘要:题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须 阅读全文
posted @ 2018-11-16 20:00 dreamer123 阅读(333) 评论(0) 推荐(0)
摘要:题目: 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 思路:(以1、2、3、4、5为例) 1 2 3 4 5 1 2 3 5 4 1 2 4 3 阅读全文
posted @ 2018-11-13 15:00 dreamer123 阅读(398) 评论(0) 推荐(0)
摘要:题目: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 说明: 被除数和除数均为 32 位有符号整数。 除数不为 0。 假设我们的环境只能存储 32 位有符号整数 阅读全文
posted @ 2018-11-11 16:06 dreamer123 阅读(698) 评论(3) 推荐(0)
摘要:题目:给定一个整数数组nums和一个目标值target,判断是否存在四个数a,b,c,d,使得a+b+c+d=target?找出所有满足条件且不重复的四元组 示例: nums = [1, 0, -1, 0, -2, 2],和 target = 0 满足要求的四元组集合为: [ [-1, 0, 0, 阅读全文
posted @ 2018-09-20 16:28 dreamer123 阅读(718) 评论(0) 推荐(0)
摘要:题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 考虑情况: 代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) 阅读全文
posted @ 2018-06-12 00:38 dreamer123 阅读(415) 评论(0) 推荐(0)
摘要:题目:给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符。 '*' 匹配零个或多个前面的元素。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 思路: 阅读全文
posted @ 2018-06-12 00:35 dreamer123 阅读(408) 评论(0) 推荐(0)
摘要:题目:将一给定字符串转换为整数并返回 说明: 注意处理第一个字符为'+'或者'-'的情况 若整数超过范围[INT_MIN,INT_MAX]则返回0 若起始有空格,则忽略 若不满足以上转整数条件,则返回0。如 "words and 987" 第一个非空字符既不是数字也不是‘+’ ‘-’故,返回0 思路 阅读全文
posted @ 2018-06-10 14:09 dreamer123 阅读(293) 评论(0) 推荐(0)
摘要:题目:将给定字符串以Z字形排列成给定的行数: 如"PAYPALISHIRING" ,numRows=3 P A H N A P L S I I G Y I R 之后从左到右排列,逐行读取字符:得到"PAHNAPLSIIGYIR"并返回 思路1:将Z字形字符数组存储到一个字符数组中,然后按行读取字符。 阅读全文
posted @ 2018-06-10 13:19 dreamer123 阅读(350) 评论(0) 推荐(0)
摘要:题目:给定字符串,求其最长的回文子串 说明:给定字符串长度为1000以内。 思路:for循环遍历字符串,求以i为中心的回文子串长度。与最长回文子串长度max_len比较,若大于max_len,则更新max_len。 说明:注意分开处理子串长度为奇偶的两种情况 时间复杂度:O(N2)。 代码: cla 阅读全文
posted @ 2018-06-09 15:23 dreamer123 阅读(1513) 评论(0) 推荐(0)
摘要:题目:给定两个排序数组,找出其中位数。 说明:若两个数组的大小和为奇数,则返回中间的那个数,否则返回中间两个数的平均值。 思路1:暴力求解法:先合并两个数组,然后根据下标索引返回相应的中位数 思路2:分割法,分别将两个数组均等划分为2份(若数组大小为奇数,则两份大小差1)。最终的目标是使得两数组的左 阅读全文
posted @ 2018-06-09 14:49 dreamer123 阅读(383) 评论(0) 推荐(0)
摘要:题目:给定一字符串,求其无重复字符的最长子串长度。 思路:for循环一次,时间复杂度为O(N)。字符的ascii值为32~126。start表示当前无重复字符子串的初始位置,初始值为0;可定义一个位置数组pos[128]表示for循环索引到当前位置时相应的字符对应的位置。若当前字符s[i](其asc 阅读全文
posted @ 2018-06-08 22:09 dreamer123 阅读(379) 评论(0) 推荐(0)
摘要:题目: 给定两个非空表示非负数的链表,数字以逆序存储且每个结点存储一个数字,求这两个非负数的和,以链表返回; 说明: 注意考虑到进位,以及链表计算完毕后的进位。如 5+5 不等于0,而等于0->1; 思路:按照链表格式从左到右相加即可,注意进位,以及链表长度不一致导致的单个数相加。 代码: /** 阅读全文
posted @ 2018-06-08 02:15 dreamer123 阅读(879) 评论(0) 推荐(0)
摘要:题目:给定一个32位有符号整数,将其反转 说明:若反转结果或者给定的有符号整数不在32位bits所能表示的范围内,则输出0 例子: input:120 output:21 input:-321 output:-123 思路:首先判断输入是否在[-231,231-1]范围内,若不在直接返回0;若在,如 阅读全文
posted @ 2018-06-08 01:42 dreamer123 阅读(788) 评论(0) 推荐(0)
摘要:题目:给定一个整型数组,返回两个数的索引,这两个数的和为给定值。 说明:输入仅且仅有一个答案,且数组元素无重复。 思路:两个for循环,暴力求解满足“和为给定值”的两个数的索引,复杂度为O(N2)。 code(C++): class Solution { public: vector<int> tw 阅读全文
posted @ 2018-06-08 00:36 dreamer123 阅读(627) 评论(0) 推荐(0)