![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
小志1989
嵌入式 软件
展开
-
leetcode 有重复字符串的排序组合
题目:有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合。示例1: 输入:S = "qqe" 输出:["eqq","qeq","qqe"]源码:char **list;int cnt;void dp(char *t, int n, char *p){ if (*p == 0) { for (int i = 0; i < cnt; i...原创 2020-02-17 22:30:07 · 494 阅读 · 1 评论 -
leetcode 无重复字符串的排序组合
题目:无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。示例1:输入:S = "qwe"输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]字符都是英文字母。字符串长度在[1, 9]之间。解题思路:深度优先+贪心。每一层用for循环对已有字符串逐个位置插入新字符,构造全部可能组合源码:c...原创 2020-02-17 22:25:24 · 582 阅读 · 0 评论 -
leetcode[557]反转字符串中的单词
题目:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格源码:char * reverseWords(char * s...原创 2020-02-14 11:02:45 · 112 阅读 · 0 评论 -
leetcode[300]最长上升子序列
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。源码:/** * 动态规划 */#define MA...原创 2020-02-14 10:41:24 · 81 阅读 · 0 评论 -
leetcode[8]字符串转整数atoi
题目:请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,...原创 2020-02-14 10:31:55 · 153 阅读 · 0 评论 -
leetcode[93]复原ip地址
题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]源码:/* 判断是否为有效IP *//* 长度为1-3, 没有前导0, 值在[0,255]之间 */bool isValidIp(char *s, int len, int *...原创 2020-02-14 10:25:11 · 118 阅读 · 0 评论 -
leetcode[221]最大正方形
题目:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4源码:/** * dp表示最大正方形边长,dp[i][j] = MIN(dp[i-1][j-1], dp[i][j-1], dp[i-1][j]); */#define ...原创 2020-02-13 18:39:04 · 100 阅读 · 0 评论 -
leetcode[344]反转字符串
题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。源码:void reverseString(char* s, int sSize){ char temp ;...原创 2020-02-13 18:35:52 · 95 阅读 · 0 评论 -
leetcode[200]岛屿数量
题目:给定一个由'1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出:1示例2:输入:11000110000010000011输出: 3源码:void _num...原创 2020-02-13 17:27:13 · 161 阅读 · 0 评论 -
leetcode[206]反转链表
题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL源码:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ...原创 2020-02-13 15:55:08 · 81 阅读 · 0 评论 -
leetcode[9]回文数
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2020-02-13 15:48:40 · 67 阅读 · 0 评论 -
leetcode[394]字符串解码
题目:给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a...原创 2020-02-13 15:39:44 · 141 阅读 · 0 评论 -
leetcode[53]最大自序和
题目:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解源码:扫描法,时间复杂度是O(n)。核心思想是,当加...原创 2020-02-13 14:47:17 · 138 阅读 · 0 评论 -
leetcode[43]字符串相乘
题目:给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例2:输入: num1 = "123", num2 = "456"输出: "56088"说明:1.num1和num2的长度小于110。2.num1 和n...原创 2020-02-13 11:27:29 · 83 阅读 · 0 评论 -
leetcode[2]两数相加
题目:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0...原创 2020-02-13 11:02:01 · 82 阅读 · 0 评论 -
leetcode[20]有效的括号
题目:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。源码:bool isValid(char* s) { //函数声明 bool isLeft(char); bool relative(...原创 2020-02-12 21:04:04 · 79 阅读 · 0 评论 -
leetcode[7]整数反转
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。源码:int reverse(int x){ long r = 0; while (x != 0) { r = 10*...原创 2020-02-12 08:54:37 · 77 阅读 · 0 评论 -
leetcode[3]无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。源码:临时数组里只需保存该字符是否被占用(占用更少的内存空间),只需遍历一次(复杂度O(N))。 改进之处:在发生字符重复现象时,将第一个重复字符之前的(包含该字符)的占用情况清除,遍历指针继续遍历而不用切换。int lengthOfLongestSubstring(char * s){ char o...原创 2020-02-12 08:43:30 · 84 阅读 · 0 评论 -
leetcode[1]两数之和
题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...转载 2020-02-07 23:02:42 · 94 阅读 · 0 评论 -
leetcode[820]单词的压缩编码
题目:给定一个单词列表,我们将这个列表编码成一个索引字符串S与一个索引列表 A。例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S = "time#bell#" 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S中索引的位置开始读取字符串,直到 "#" 结束,来恢复我们之前的单词列表。那么成功对给定单...原创 2020-02-07 22:20:22 · 1952 阅读 · 0 评论 -
leetcode[1151]最少交换次数来组合所有的1
题目:给出一个二进制数组data,你需要通过交换位置,将数组中 任何位置 上的 1 组合到一起,并返回所有可能中所需最少的交换次数。示例 1:输入:[1,0,1,0,1]输出:1解释:有三种可能的方法可以把所有的 1 组合在一起:[1,1,1,0,0],交换 1 次;[0,1,1,1,0],交换 2 次;[0,0,1,1,1],交换 1 次。所以最少的交换次数为 1。...原创 2020-02-07 21:33:48 · 897 阅读 · 0 评论 -
leetcode[5]最长回文子串
题目:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。源码:char * longestPalindrome(char * s){ int left = 0; int right = 0; int maxlength = 0;//回文子串最大长度 int startindex = 0;//最长回文子串开...原创 2020-02-07 21:08:19 · 134 阅读 · 0 评论 -
leetcode[758]字符串中的加粗单词
题目:给定一个关键词集合words 和一个字符串S,将所有 S 中出现的关键词加粗。所有在标签 <b> 和</b>中的字母都会加粗。返回的字符串需要使用尽可能少的标签,当然标签应形成有效的组合。例如,给定words = ["ab", "bc"] 和S = "aabcd",需要返回"a<b>abc</b>d"。注意返回"a&...原创 2020-02-07 14:30:39 · 565 阅读 · 0 评论