leetcode
C语言练习
LinuxST
相互学习,共同进步。
展开
-
leetcode 5. 最长回文子串(C语言)
给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。原创 2022-12-18 17:38:02 · 399 阅读 · 0 评论 -
leetcode 4. 寻找两个正序数组的中位数(C语言)
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。输入:nums1 = [1,2], nums2 = [3,4]输入:nums1 = [1,3], nums2 = [2]解释:合并数组 = [1,2,3] ,中位数 2。输出:2.00000。输出:2.50000。原创 2022-12-18 15:50:16 · 140 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串(C语言)
解题思路:从第一个字符开始遍历以该字符为起始位置的无重复字符串,通过ascii码共127个的特性可以进行计数。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。2. s 由英文字母、数字、符号和空格组成。输入: s = “abcabcbb”输入: s = “pwwkew”原创 2022-12-18 14:20:17 · 280 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径
剑指 Offer 12. 矩阵中的路径给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”原创 2021-07-18 10:55:50 · 86 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0暴力解法int minArray(int* numbers, int numbersSize){ int i = 0; i原创 2021-07-17 20:43:57 · 59 阅读 · 0 评论 -
2021-07-17
剑指 Offer 10- II. 青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1分析假设跳n级台阶有f(n)种跳法, 青蛙最后一次跳有两种可能。第一种可能:跳一个台阶到达终点,这时共有f(n - 1)种跳法第二原创 2021-07-17 20:42:25 · 72 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 tar原创 2021-07-17 19:55:27 · 77 阅读 · 0 评论 -
力扣 两数之和
两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。int record[1000007] = {0};int原创 2021-07-17 19:53:42 · 80 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。int maxSubArray(int* nums, int numsSize){ //动态规划问题 int i = 0; int arr[numsSize]; i原创 2021-07-17 10:03:28 · 57 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000int findRepeatNumber(int* nums, int numsSize){ int *arr原创 2021-07-16 21:46:42 · 60 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
剑指offer,斐波那契数int fib(int n){ int a = 0; int b = 1; int c; while(n--) { c = (a + b)%1000000007; a = b; b = c; } // if (a > 65535) // { // return () // } return a;}...原创 2021-07-16 15:45:33 · 64 阅读 · 0 评论 -
力扣 1818、求绝对值差和
leetcode1818绝对值差和int cmp(const int *a, const int *b){ return *a - *b;//升序 //降序是return *(int *)b - *(int *)a;}int binarySearch(int *arr, int r, int tar){ int mid = 0; int l = 0; while(l < r) { mid = (l + r) >>原创 2021-07-16 15:44:16 · 336 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
两个栈实现队列功能#define MAX 10000typedef struct { int data[MAX]; int top;}Stack;bool stack_is_empty(Stack *S){ if (S->top == 0) { return 1; } else { return 0; }}void pushStack(Stack *S, int val){ i原创 2021-07-16 15:41:28 · 59 阅读 · 0 评论