算法
林敏锐丶
驽马十驾 功在不舍
展开
-
动态规划题目:最大子序和
题目描述给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray...原创 2019-12-19 12:55:49 · 140 阅读 · 0 评论 -
算法 递归
今天好好琢磨琢磨递归,当时上C语言的时候听得云里雾里的,后来上了汇编语言和自学spring的时候才渐渐摸出了门道。 递归,也就是自己调用自己,但是不是没有限制的自己调用自己,不然栈内存不够用了程序就死掉了,所以这个自己调用自己的“历程”一定是有终点的。 先看一个简单的例子 import java.util.logging.Logger;public class RecursiveTes...原创 2019-04-21 21:50:06 · 204 阅读 · 0 评论 -
算法 希尔排序
算法 第一次先将步长定义为数组长度的二分之一。 遍历整个数组的每一个元素,如果符合 当前元素下标 - 步长 >= 0 (也就是说当前下边往前数 步长 个数组还有元素) 如果当前的元素比步长个元素的元素小的话 将两个元素的位置交换 将步长定义为第一个步骤的二分之一,再来一次,知道步长为为止,需要注意的是步长为1的时候还是需要遍历的,这是最后一个处理,也就是一次简...原创 2019-04-29 20:29:29 · 136 阅读 · 0 评论 -
算法 简单选择排序
算法 第一次选择数组的第一个元素,然后往后找,找到整个数组中最小的那个元素,将它和第一个元素交换位置。 将第二个元素起的所有元素当作一个新的数组,这样子第二个元素就成了第一个元素,再来一次步骤一。 将第三个元素起的所有元素当作一个新的数组,这样子第三个元素就成了第一个元素,再来一次步骤一。 以此类推。。。。。。 算法很简单,就不在代码立穿插太多讲解了 package sel...原创 2019-04-29 21:04:39 · 99 阅读 · 0 评论 -
面试准备(1) 时间复杂度
先说一下常数操作,比如说内存寻址,取出数据等操作,就是说不管找的数是什么,这些操作只和计算机的性能有关的操作,就叫做常数操作。 例子 寻找数组最大值算法:设置一个max 变量, 遍历这个数组,每次找到比max 更大的数的时候,就用这个更大的数替换max 变量,这样以来就需要从0开始一直遍历到数组的长度n-1 总共n个数,注意,寻找这些数和比较,替换等操作为常数操作为常数操作(虽然有的数不进行替...原创 2019-07-29 11:12:56 · 169 阅读 · 0 评论 -
LeetCode -> Two Sum
* 给出一个数组和一个数字,要求在这个数组中找到某两个数加起来等于给定的数字,输出其下标* Given nums = {2,7,11,15}, target = 9* Bacase nums[0] + nums[1] = 2 + 7 = 8* return [0, 1]解法1 : 依次遍历数组中的每个数字,算出它对应的另外一个加数是是什么,然后从数组里边遍历,看有没有符合条件 的数字...原创 2019-08-27 21:45:58 · 77 阅读 · 0 评论 -
LeetCode -> Longest Substring Without
给定一个字符串,找出最大五重复字符的字串。 算法的难点在于: 第一次找到了 w, 第二次找到了 w, 这个时候应该计算一次长度,然后把第一个 w 连同前边的字符都舍弃,从第一个 w 的下一个字符开始新一轮的遍历,如果找到了第三个 w, 计算一次最大长度,把第二个 w 连同前边的字符一起舍弃,从第二个 w 的下一个字符开始遍历。 算法思想: 设置一个长度为 128 的 boolean 类型...原创 2019-08-29 22:16:04 · 85 阅读 · 0 评论