算法题(leetcode)
ShawnWang1994
用心,慢慢来!
展开
-
N个数(其中数可重复),求出其中第m大的数。
题目:N个数(其中数可重复),求出其中第m大的数。#include<stdio.h>int Maxm(int *number,int m){ if(number==NULL) return 0; int length=5; int i=0; for(i;i<length;i++) { int j=0; for(j;j<length-i-1;j...原创 2019-08-18 20:46:41 · 1398 阅读 · 0 评论 -
每日一道算法题——合并两个有序链表(6.19)
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解答:/** * Definition for singly-linked list. * struct ListNode { * int ...原创 2019-06-20 20:23:10 · 265 阅读 · 0 评论 -
每日一道算法题—— 删除排序数组中的重复项(6.20)
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 n...原创 2019-06-21 15:05:17 · 163 阅读 · 0 评论 -
每日一道算法题—— 移除元素(6.21)
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...原创 2019-06-21 15:26:52 · 280 阅读 · 0 评论 -
每日一道算法题—— 搜索插入位置(6.21)
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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解答:...原创 2019-06-21 17:00:04 · 237 阅读 · 0 评论 -
每日一道算法题——最后一个单词的长度
题目:给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5解答:int lengthOfLastWord(char *s){ int WordLength=0;//存储单词长度 int WordLe...原创 2019-07-09 00:05:53 · 189 阅读 · 0 评论 -
每日一道算法题——加一
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。解答:...原创 2019-07-10 11:23:35 · 444 阅读 · 1 评论 -
每日一道算法题——最大子序和
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解答:int maxSubArray(int* nums,int numsSize){ int max=nums[0];//将第一个值赋值为最...原创 2019-07-11 15:14:35 · 250 阅读 · 0 评论 -
链表归并
void mergearry(LNode *a,LNode*b,LNode*&c){ LNode *p=a->next; LNode *q=b->next; LNode *r; c=a; c->next=NULL; free(b); r=c; while(p=!NULL&&q!=NULL)...原创 2019-07-13 20:59:02 · 491 阅读 · 3 评论 -
链表逆值
while(p->next!=q){ t=p->next; p->next=t->next; t->next=q->next; q->next=t;}原创 2019-07-13 21:12:47 · 350 阅读 · 0 评论 -
x 的平方根
题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解答:int mySqrt(int x){long long i=0;...原创 2019-07-14 11:47:25 · 293 阅读 · 0 评论 -
力扣28. 实现 strStr()
题目:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = ...原创 2019-09-17 13:26:15 · 443 阅读 · 0 评论 -
力扣108. 将有序数组转换为二叉搜索树
题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -1...原创 2019-09-17 15:29:07 · 567 阅读 · 0 评论 -
每日一道算法题——有效的括号(6.18)
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: ...原创 2019-06-20 15:34:15 · 256 阅读 · 0 评论 -
每日一道算法题——最长公共前缀(6.17)
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解答:char * longestCommonPre...原创 2019-06-19 20:48:46 · 523 阅读 · 0 评论 -
从字符串中“aecbcda”找出不重复的字符组成的顺序子串“aecbd”
题目:从字符串中“aecbcda”找出不重复的字符组成的顺序子串“aecbd”,用最优的时空复杂度。 答题说明:该题为手动判卷,答案只要写对即可,不用严格满足字符比对。解答:#include<stdio.h>#include<string.h>#include<malloc.h>char* LongString(char* str,int lengt...原创 2019-08-18 20:26:22 · 675 阅读 · 1 评论 -
每日一道算法题——二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解答:int maxDepth(struct TreeNode* root){...原创 2019-08-14 22:42:03 · 166 阅读 · 0 评论 -
每日一道算法题——对称二叉树
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ 2 2\ 3 3说明:如果你可以运用递归和迭代两种方法解决这个问题,会很加分。解答:/** * Definition...原创 2019-07-23 22:50:50 · 198 阅读 · 0 评论 -
每日一道算法题——相同的树
题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2 ...原创 2019-07-23 22:27:02 · 189 阅读 · 0 评论 -
每日一道算法题—— 合并两个有序数组
题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 =...原创 2019-07-16 23:06:21 · 176 阅读 · 0 评论 -
冒泡排序算法及优化
一般冒泡排序的写法//假设排序arr[] = { 1, 3, 4, 2, 6, 7, 8, 0 };void BubbleSort(int arr[],int len){ int i = 0; int tmp = 0; for (i = 0; i < len - 1; i++)//确定排序趟数 { int j = 0; for (j = 0; j < len - ...原创 2019-07-16 11:39:27 · 126 阅读 · 0 评论 -
每日一道算法题—— 删除排序链表中的重复元素
题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3解答:struct ListNode* deleteDuplicates(struct ListNode* head){ struct Li...原创 2019-07-14 23:14:51 · 233 阅读 · 0 评论 -
每日一道算法题——爬楼梯
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1...原创 2019-07-14 22:41:24 · 606 阅读 · 0 评论 -
每日一道算法题——twoSum(6.13)
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解答int*...原创 2019-06-13 21:31:28 · 671 阅读 · 0 评论 -
每日一道算法题——整数反转(6.14)
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21解答:#define MIN -2147483648#define MAX 2147483647int reverse(int x){ int i=0,j,t; ...原创 2019-06-14 17:27:09 · 201 阅读 · 0 评论 -
每日一道算法题——回文数(6.15)
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解答:...原创 2019-06-17 20:08:04 · 389 阅读 · 0 评论 -
每日一道算法题——罗马数字转整数(6.16)
题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 ...原创 2019-06-18 10:21:45 · 293 阅读 · 0 评论 -
力扣112. 路径总和
题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / ...原创 2019-09-19 22:48:23 · 512 阅读 · 0 评论