刷刷题
没事刷刷题
_Bruce
在其职,谋其政,尽其责
展开
-
两数相加
给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0开头。 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807 输入:l1 = [0], l2 = [0] 输出:[0] 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9...原创 2021-05-07 21:27:53 · 82 阅读 · 0 评论 -
无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列,不是子串...原创 2020-10-14 10:46:23 · 212 阅读 · 1 评论 -
两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807 ListNode* addTwoNumbers(L...原创 2020-10-13 21:06:20 · 109 阅读 · 0 评论 -
三数之和
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 vector<vector<int>> threeSum(vector<int>& nums) { std::sort(nums.begin(),nums.end()); vector<vector<in...原创 2020-10-12 20:54:31 · 77 阅读 · 0 评论 -
螺旋矩阵
local arr = { {1, 2, 3, 4, 5, 6}, {7, 8, 9, 10,11,12}, {13,14, 15,16,17,18}, {19,20, 21,22,23,24}, {25,26, 27,28,29,30}, {31,32, 33,34,35,36} } local output local printRotation = function(a,b,row,col) if a == row then --一行.原创 2020-08-16 13:56:37 · 101 阅读 · 0 评论 -
树的广度优先遍历跟深度优先遍历
最近准备面试,刷刷应届生的基本算法............. 深度优先遍历 如下树的深度优先遍历结果为:A B D E C F G * A * / \ * B C * / \ /\ * D E F G DFS实现 深度优先遍历分先序遍历、后序遍历、中序遍历 遍历顺序为先根节点、再左子树、再又子树 数据结构:栈 java实现逻辑 public void DFS(TreeNode root) { Stack<TreeNode> s原创 2020-08-10 20:06:33 · 454 阅读 · 0 评论 -
原地归并的抽象方法
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。 原地归并的抽象方法 local function merge(a,low...原创 2020-04-06 23:03:39 · 301 阅读 · 0 评论 -
插入排序
插入排序就好比我们打牌时,将一张牌插入到其他已经排序好的牌中,为了给插入的当前元素腾出位置,我们需要将其他所有元素在插入之前都向右移动一位。需选择排序一样,当前索引左边的所有元素都是有序的,但他们的最终位置还不确定,为了给更小的元素腾出空间,他们可能会被移动。但是当索引达到最右端时,数组排序就完成了。 简而言之就是将右边未排序的元素挨个插入到左边已经排序好的元素中。 void exchang...原创 2020-03-29 23:44:52 · 85 阅读 · 0 评论 -
选择排序
选择排序:首先,找到数组中最小的那个元素,其次,将它喝数组中的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组中的第二个元素交换位置,以此类推,直到将整个数组遍历完。 int nums[10] = { 10,13,1,5,20,18,15,17,11,6 }; int length = sizeof(nums) / sizeof...原创 2020-03-29 22:44:26 · 118 阅读 · 0 评论