自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 33.LeetCode之打家劫舍 (不相邻数组元素的最大和)

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 ...

2019-03-14 18:50:49 325

原创 31.LeetCode之颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00...

2019-03-14 10:02:31 247

原创 30.LeetCode之旋转数组

给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。说明:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为O(1) 的原地算法。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1...

2019-03-14 09:08:39 190

原创 29.LeetCode之阶乘后的零

给定一个整数n,返回n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明:你算法的时间复杂度应为O(logn)。思路解析: 首先题目的意思是末尾有几个0 比如6! = 【1* 2* 3* 4* 5* 6】 ...

2019-03-13 20:28:40 177

原创 28.LeetCode之求众数 (摩尔投票算法&分治法)

给定一个大小为n的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2C代码:摩尔投票算法/**摩尔投票算法*不断排除数组的前一部分,后一部分同样满足存在某一元素的出现次数大于⌊n/...

2019-03-12 21:25:13 586

原创 27.LeetCode之两数之和 II - 输入有序数组

给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], ...

2019-03-12 17:55:17 170

原创 26.LeetCode之相交链表

编写一个程序,找到两个单链表相交的起始节点。题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/相交链表解题思路详解:https://blog.csdn.net/dawn_after_dark/article/details/73864643C代码:双指针(每个指针都遍历了AB两个链表)/*...

2019-03-11 22:25:56 156

原创 25.LeetCode之环形链表

给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tru...

2019-03-10 22:02:29 135

原创 24.LeetCode之只出现一次的数字(异或运算符的使用技巧)

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路:由题干中的 " 两次 ",可以考虑通过异或运算符 " ^ “ 来实现C代码:(异或:相同为0,不同为...

2019-03-10 10:40:02 313

原创 23.LeetCode之验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falseC代码①:修改原字符串(大写字母变小写字母)bool isPalindrome(c...

2019-03-10 09:00:47 316

原创 22.LeetCode之买卖股票的最佳时机 II(数组中的多次累计的最大差值之和)

给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交...

2019-03-09 17:07:56 276

原创 21.LeetCode之买卖股票的最佳时机(数组中任两个元素的最大正差值)

给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...

2019-03-08 21:28:13 250

原创 20.LeetCode之二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。C代码:递归/** * Definition for a binary t...

2019-03-06 18:34:56 162

原创 19.LeetCode之对称二叉树

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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说明:可以运用递归和迭代两种方法解决这个问题...

2019-03-05 22:22:27 87

原创 18.LeetCode之相同的树

给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...

2019-03-05 16:04:44 75

原创 17.LeetCode之合并两个有序数组

给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 =...

2019-03-04 22:39:12 101

原创 16.LeetCode之删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3代码①:逐位比较并移动/** * Definition for singly-linked list. * struct ListNode...

2019-03-04 20:18:10 92

原创 15.LeetCode之 x 的平方根

实现int sqrt(int x)函数。计算并返回x的平方根,其中x是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。代码①:二分法,最大int型整数开根号为46340.9,故...

2019-03-04 02:46:57 721

原创 C语言 牛顿迭代法求平方根

对于用牛顿迭代法求平方根,最重要的是利用函数关系得到切线方程,再求出迭代公式牛顿迭代法:多数方程不存在求根公式,牛顿提出了一种用迭代来求方程近似根的方法。思路就是不断取切线,用线性方程的根逼近非线性方程f(x)=0的根X*。流程演示:不断取切线,逼近非线性方程f(x)的根迭代公式的求法过点(Xk,f(Xk))作函数的切线,切线方程是:.切线与x轴的交点是Xk+1,点(X...

2019-03-04 02:46:11 10106

原创 14.LeetCode之二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"不推荐思路:字符串->二进制->十进制->相加->二进制 -&amp

2019-03-03 16:25:53 148

转载 C语言中malloc、calloc、以及realloc函数的区别

首先,对于malloc函数。其原型void*malloc(unsignedintnum_bytes)num_byte为要申请的空间大小,需要我们手动的去计算,如int*p=(int*)malloc(20*sizeof(int)),如果编译器默认int为4字节存储的话,那么计算结果是80Byte,一次申请一个80Byte的连续空间,并将空间基地址强制转换为int类型,赋值给指针...

2019-03-03 02:23:47 1108

原创 C语言中strlen()和 sizeof()的区别

C语言中没有字符串类型,字符串在内存中是用字符数组表示的。strlen( ):strlen( )求得的是字符串的长度sizeof( ):sizeof( )计算字符串占的总内存空间例如字符串str[20]= {“abcdef”};strlen(str),结果为6sizeof(str),结果为20...

2019-03-03 02:19:00 502

原创 13.LeetCode之加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。C...

2019-03-03 00:14:29 77

原创 12.LeetCode之最后一个单词的长度

给定一个仅包含大小写字母和空格' '的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5C代码:int lengthOfLastWord(char* s) { int i=0, length=0; if( *s == '\0...

2019-03-02 21:46:36 92

原创 11.LeetCode之最大子序和

给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。代码①:O(n)int maxSubArray(int* nums, int numsSize) { int max = nums[0]...

2019-03-02 16:29:16 69

原创 10.LeetCode之搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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-03-02 03:26:59 83

原创 9.LeetCode之实现strStr()

实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = ...

2019-03-01 23:29:11 70

原创 8.LeetCode之移除元素

给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个...

2019-03-01 20:14:51 63

原创 7.LeetCode之删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定...

2019-03-01 02:07:13 74

原创 6.LeetCode之合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码:/** * Definition for singly-linked list. * struct ListNode { * in...

2019-03-01 01:39:29 77

原创 5.LeetCode之有效的括号(括号匹配)

给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:...

2019-03-01 00:52:55 459 1

原创 5.链表:judge whether a single linked list has a ring

//judge whether a single linked list has a ringstruct ListNode{ int key; ListNode *next;}bool check(const ListNode *head){ if(head == NULL) return false; ListNode *slow = head, *fast ==...

2019-02-28 00:02:35 109

原创 4.链表:find the second largest number in integer array

//use recrusion to merge two ordered linked lists into a ordered linked listsListNode * Merge(ListNode *ahead, ListNode *bhead){ if(ahead == NULL) return bhead; if(bhead == NULL) return ahead...

2019-02-27 23:59:24 148

原创 3.链表:find the reciprocal K node in a single linked list

struct ListNode{ int m_nkey; ListNode *m_pNext;}ListNode *FtrKNode(ListNode *pHead){ if(k == 0 || pHead == NULL) return NULL; ListNode *pAhead = pHead; ListNode *pBehind = pHead; while(...

2019-02-27 23:58:04 102

原创 2.链表:reverse single linked list

//reverse single linked liststruct ListNode{ int m_nkey; ListNode *m_pNext;}ListNode *ReverseList(ListNode *pHead){ if(pHead == NULL || pHead->m_pNext == NULL) return pHead; ListNode...

2019-02-27 23:56:50 137

原创 1.链表:the amount of Node

struct ListNode{ int m_nkey; ListNode *m_pNext;}//the amount of Nodeunsigned int GetListLength(ListNode * pHead){ if(pHead == NULL) return 0; unsigned int nLength = 0; ListNode * pCurre...

2019-02-27 23:56:05 106

原创 4.LeetCode之回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。代码...

2019-02-27 23:12:01 165

原创 3.LeetCode之整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。#define...

2019-02-27 19:55:09 74

原创 2.LeetCode之两数之和

给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]//暴力解法...

2019-02-27 19:51:51 82

原创 1.LeetCode之最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母

2019-02-27 19:47:10 124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除