![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C代码
一把大锤子
这个作者很懒,什么都没留下…
展开
-
判断链表是否有环进阶版
一、题目描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:tail connects to node index 1 解释:链表中有一个环...原创 2020-05-04 21:18:30 · 131 阅读 · 0 评论 -
回文数
一、题目描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 ...原创 2020-04-26 21:33:29 · 109 阅读 · 0 评论 -
最大子序和之C语言的解法
一、题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大为 6。 二、我的思路 就是数组之间的元素相加。定义两个变量,一个存储当前相加的和sum,一个是数组的首元素max,依次相加。当相加的字段和小于0是,就...原创 2020-04-22 22:14:33 · 264 阅读 · 0 评论 -
字符串比较之最长公共前缀
一、题目描述 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 二、我的思路 定义一个指针str指向字符串的第一个字母,让后面的字符串与str比较,如果全都相等str++继续比较。如果不相等,则修改str。并定义一个指针temp指向当前字符串...原创 2020-04-20 21:48:37 · 247 阅读 · 0 评论 -
求一个数x的平方根
一、我的思路 1、当然第一种最简单的方法,直接return sqrt(x)。我们都知道c语言中有一个专门求平方根的函数。直接返回这个函数也是可以的。当然这有点投机取巧。 2、第二种方法,我们利用二分查找的思想。因为我们都知道一个数的平方根不会大于它本身,也不会小于0。所以也就是在0到它本身的区间进行查找。不过直觉还告诉我们,一个数的平方根最多不会超过它的一半。所以二分法也就是在有限的区间里,一次排...原创 2020-04-18 22:24:59 · 1526 阅读 · 0 评论 -
删除排序链表中的重复项进阶版
一、题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 二、我的思路 与上一篇不同的是此题要求删除的是所有重复数字的节点,...原创 2020-04-17 22:11:36 · 184 阅读 · 0 评论 -
回文链表
一、题目 二、思路 由于单链表无法倒着遍历,所以无法使用双指针技巧。 此题可以看做是反转链表 和 链表中间结点 的结合。定义快慢两个指针,寻找中间结点,同时在慢指针移动的过程中反转前半部分子链表。当找到中间结点时,再分别向前向后比较前后两个子链表的每一个结点值是否相同。 三、代码实现 bool isPalindrome(struct ListNode* head) { if(head =...原创 2020-03-26 22:35:57 · 136 阅读 · 1 评论 -
排序数组中删除重复项
思路:我们可以采用两个标记点i和num,num来记录数组中不重复的元素。如果i位置的元素和num位置的元素不相等,需要放到num的下一位置。如果相等。则不用管,最后返回num+1。 代码: int removeDuplicates(int* nums, int numsSize) { if(nums == NULL || numsSize == 0) { ret...原创 2020-03-23 19:20:48 · 76 阅读 · 0 评论 -
判断链表是否有环
思路:可以定义两个快慢指针一个快于一个,只要两个指针相遇则证明有环,否则返回false。 代码: bool hasCycle(struct ListNode *head) { struct ListNode* fast = head; struct ListNode* slow = head; if(fast == NULL && slow == NULL )...原创 2020-03-23 18:37:44 · 59 阅读 · 0 评论 -
【力扣】第21题-合并两个有序链表
一、题目描述 二、思路 一般的思路是:建立两个指针p1、p2,p1指向第一个链表,p2指向第二个链表。并比较p1和p2所指向的值,把较小的值连接到新的链表中,指针并向后移动,直到有一个指向空,再将没有另外那个直接链接到新链表的最后。最后退出。 三、代码实现 这里可以用递归很快实现 struct ListNode* mergeTwoLists(struct ListNode* l1, struct...原创 2020-03-19 20:50:37 · 371 阅读 · 0 评论