数据结构
swety_gxy
一个IT行业的代码菜鸟,平时喜欢关注媒体类的事物,在此记录自己的修炼历程。
展开
-
Leedcode编程题-面试题22. 链表中倒数第k个节点----C++实现
目的:旨在记录在Leedcode网上刷题的过程,记录心得。题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.思路:采用快慢指针:快指针先走K步;然后慢指针开始跟快指针同原创 2020-06-16 21:34:33 · 202 阅读 · 0 评论 -
Leedcode编程题41: 缺失的第一个正数----C++实现
目的:旨在记录在Leedcode网上刷题的过程,记录心得。题目:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示: 你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。思路:last:保存遍历到的符合条件的最大范围思路:先将数组排好序;依次遍历数组元素,处理符合[原创 2020-05-21 12:45:42 · 226 阅读 · 0 评论 -
Leedcode编程题147: 对链表进行插入排序----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目对链表进行插入排序。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: ...原创 2020-02-03 08:59:08 · 272 阅读 · 0 评论 -
Leedcode编程题92: 反转链表 II----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路将指针移动到m-1...原创 2020-01-21 23:30:33 · 157 阅读 · 0 评论 -
Leedcode编程题206:反转链表----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路每次循环,都将当前节点指向它前面的节点,然后当前节点和前节点后移。...原创 2020-01-20 21:51:57 · 167 阅读 · 0 评论 -
Leedcode编程题217: 存在重复元素 ----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4...原创 2020-01-17 23:17:00 · 207 阅读 · 0 评论 -
Leedcode编程题219: 存在重复元素 II----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的绝对值最大为 k。示例1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1...原创 2020-01-16 22:20:42 · 156 阅读 · 0 评论 -
Leedcode编程题23: 合并K个排序链表----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6思路参考大神的思路,实现的代码。1...原创 2020-01-15 22:49:58 · 203 阅读 · 0 评论 -
Leedcode编程题49: 字母异位词分组----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输...原创 2020-01-12 23:52:43 · 443 阅读 · 0 评论 -
Leedcode编程题18: 四数之和----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个包含n 个整数的数组nums和一个目标值target,判断nums中是否存在四个元素 a,b,c和 d,使得a + b + c + d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, ...原创 2020-01-11 12:13:40 · 232 阅读 · 0 评论 -
Leedcode编程题454: 四数相加II----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最...原创 2020-01-11 11:30:24 · 463 阅读 · 0 评论 -
Leedcode编程题451: 根据字符出现频率排序----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"...原创 2020-01-10 15:14:20 · 412 阅读 · 0 评论 -
Leedcode编程题209:长度最小的子数组----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你已经完成...原创 2020-01-09 17:09:50 · 234 阅读 · 0 评论 -
Leedcode编程题11:盛最多水的容器----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 ...原创 2020-01-08 12:03:06 · 224 阅读 · 0 评论 -
Leedcode编程题215:数组中的第K个最大元素----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有...原创 2020-01-08 10:10:57 · 156 阅读 · 0 评论 -
Leedcode编程题88:合并两个有序数组----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:n...原创 2020-01-08 10:03:34 · 211 阅读 · 0 评论 -
Leedcode编程题75:颜色分类----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,...原创 2020-01-06 13:56:15 · 309 阅读 · 0 评论 -
Leedcode编程题80:删除排序数组中的重复项 II----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素...原创 2020-01-05 14:07:12 · 162 阅读 · 0 评论 -
Leedcode编程题27:移除元素----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], ...原创 2020-01-05 13:07:29 · 107 阅读 · 0 评论 -
Leedcode编程题26:删除排序数组中的重复项----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 ...原创 2020-01-04 14:06:29 · 184 阅读 · 0 评论 -
Leedcode编程题283:移动零----C++实现
目的旨在记录在Leedcode网上刷题的过程,记录心得。题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路依次遍历数组,遇到0元素便开始统计step,遇到非0元素便开始移动st...原创 2020-01-03 23:45:52 · 382 阅读 · 0 评论 -
二叉树的创建和遍历---C++实现
1. 二叉树概念二叉树是一颗树,其中每个节点都不能有多于2个的子树,一般会有左子树和右子树,两者均可能为空。二叉树实际上是图。2. 二叉树节点和类的声明创建树之前需要先声明一个树的结点。//声明树结点typedef struct node { char element; //结点值 struct node* left; //左子树 struct node* right...原创 2019-12-27 17:10:10 · 811 阅读 · 0 评论