![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
基本算法以及LeetCode,剑指Offer,等算法题和基础概念
Vicali
程序员
展开
-
算法基础(一)
分治法核心思想:将一个难以直接解决的问题分割为n个子问题,各个击破,即“分而治之”也就是把一个大的项目分为n个子项目,交给n个人去解决这n个问题,把问题化解。递归法递归是一种特殊的算法,和分治法很像,都是把一个进行分解,使其越来越小,使子问题容易解决。 如果一个函数是自身所定义或调用,就称为递归。递归至少要满足两个条件1.自己调用自己的一个过程2有一个跳出递归过程的出口冒泡排序冒泡排序就是比较相邻的元素,将小的放到前面int[] arr = {1,2,6,5,4,8}.原创 2020-12-10 21:10:59 · 258 阅读 · 0 评论 -
LeetCode算法题:左旋字符串
题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”限制:1 <= k < s.length <= 10000来源:力扣(LeetCode原创 2020-12-07 20:34:41 · 210 阅读 · 0 评论 -
LeetCode算法题:反转链表
题目:反转链表方法一:迭代假设存在链表 1 \rightarrow 2 \rightarrow 3 \rightarrow \varnothing1→2→3→∅,我们想要把它改成 \varnothing \leftarrow 1 \leftarrow 2 \leftarrow 3∅←1←2←3。在遍历列表时,将当前节点的 \textit{next}next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记转载 2020-12-05 16:43:49 · 183 阅读 · 0 评论 -
LeetCode算法题:只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)class Solution { public int singleNumber(int[] nums) { for (int i = 1; i <nums.l原创 2020-12-05 16:38:28 · 108 阅读 · 0 评论 -
LeetCode算法题:拥有糖果最多的孩子
题目给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true]解释:孩子 1 有 2 个糖果,如果原创 2020-12-05 15:21:35 · 160 阅读 · 0 评论 -
LeetCode算法题:好数对的数目
题目给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1,2,3]原创 2020-12-05 15:12:50 · 140 阅读 · 0 评论 -
LeetCode算法题:一维数组的动态和
题目:给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+原创 2020-12-05 14:48:52 · 539 阅读 · 0 评论