algorithm
是猿儿
这个作者很懒,什么都没留下…
展开
-
【Algorithm】15题_三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。public class three_sum_15 { /** * 双指针法: 先对数组进行排序,固定一个k指针在有序数组中依次向后遍历, * i,j指针分别为剩余部分的头和尾以此向中间收缩,寻找三数和为零的结果集。 * 收缩原则原创 2020-12-02 10:56:44 · 147 阅读 · 0 评论 -
【Algorithm】11题_盛最多水的容器
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。public class maxArea_11 { /** * 1、枚举(类似于冒泡O(n^2)):left bar x,right bar y, (x-y)*height_diff * * @p原创 2020-11-29 19:43:16 · 200 阅读 · 0 评论 -
【Data structures】283题_移动零
//给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。public class move_zeroes_283 { //该方法是交换0到末尾去,非稳定的处理方法 public void moveZeroes(int[] nums) { int len = nums.length - 1; int start = 0; for (; start < len; start++) {原创 2020-11-28 19:47:04 · 122 阅读 · 0 评论 -
【Data structures】二分搜索处理重复元素
public class binarySearch { //该二分法处理重复元素时返回下标小的值(有序数组) public int bSearch(int[] array, int n, int value) { int low = 0; int high = n - 1; while (low <= high) { int mid = low + (high - low) / 2; if原创 2020-11-27 18:37:36 · 162 阅读 · 0 评论 -
【Algorithm】数组:78题-子集 & 90题-子集2
题目给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。import java.util.ArrayList;import java.util.List;//暴力扩展法/*思想: 先加入空集,在该集合的基础上加入下一个元素,数组[1,2,3]1、先加入[] 结果集={[]},2、再加入1,结果集={[],[1]} //空集的基础上加入13、再加入2,结果集={[],[1],[2],[1,2]} //{[],[1]}的基原创 2020-10-28 12:52:17 · 256 阅读 · 1 评论 -
【Algorithm】数组:1题-两数之和 & 268题-缺失数字
1题两数字和暴力解题法:思想:遍历每个元素和其他元素相加的和,结果为target则返回python3 :class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: # 暴力解题法(n个元素) length = len(nums) # 将每一个元素与其后面的元素相加共需要n-1轮 for i in range(length原创 2020-10-08 15:07:02 · 100 阅读 · 0 评论 -
【algorithm】最大子序和[贪心]
题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。算法思想函数输入一个数组,输出一个最大值定义一个存储当前指向元素值的ans,定义一个用于存储当前指向元素之间的元素和的sum首先将第一个元素赋给ans,然后依次遍历数组将元素赋给ans,将遍历到的每一个ans值之前的元素进行相加为sum,如果sum大于0原创 2020-09-28 09:34:37 · 158 阅读 · 0 评论 -
【algorithm】贪心算法(greedy)之活动安排问题
贪心算法概述顾名思义:总是做出当前看来最优的选择,并不是整体上最优加以考虑,最初的选择只是在某种意义上的局部最优选择。活动安排问题:要求高效地安排一系列争用某一公共资源的活动,使尽可能多的活动能够兼容地使用公共资源。n个活动的集合,每个活动都有开始时间s和结束时间f,思想:按照结束时间非减排序,安排的活动不产生冲突,也就是前一个问题的结束时间f要小于下一个问题的开始时间s,满足条件即可进行活动安排。java代码int[] s //表示每个活动的开始时间int[] f //表示每个活动的原创 2020-09-02 15:37:39 · 411 阅读 · 0 评论