随笔分类 -  算法

摘要:计数排序 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1] 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(nlog(n)) 阅读全文
posted @ 2022-02-26 11:16 一刹流云散 阅读(99) 评论(0) 推荐(0) 编辑
摘要:#Java实现八大排序算法 本文对常见的排序算法进行了总结。 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排序算法,他们之间关系如下: 稳定与非稳定: 如果一个排序算法能够保留数组 阅读全文
posted @ 2022-02-25 13:51 一刹流云散 阅读(67) 评论(0) 推荐(0) 编辑
摘要:动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的, 对于动态规划问题,我将拆解为如下五步曲,这五步都搞清楚了,才 阅读全文
posted @ 2022-02-09 19:25 一刹流云散 阅读(29) 评论(0) 推荐(0) 编辑
摘要:##跳跃游戏 class Solution { public boolean canJump(int[] nums) { if(nums.length==1) return true; int cover=0; //覆盖范围, 初始覆盖范围应该是0,因为下面的迭代是从下标0开始的 //在覆盖范围内更 阅读全文
posted @ 2022-02-08 21:27 一刹流云散 阅读(14) 评论(0) 推荐(0) 编辑
摘要:贪心的本质是选择每一阶段的局部最优,从而达到全局最优 贪心没有套路,说白了就是常识性推导加上举反例。 贪心算法一般分为如下四步: 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 ##分发饼干 class Solution { public int 阅读全文
posted @ 2022-02-07 21:46 一刹流云散 阅读(24) 评论(0) 推荐(0) 编辑
摘要:##子集 class Solution { List<List<Integer>> sum=new LinkedList<>(); LinkedList<Integer> path=new LinkedList<>(); public List<List<Integer>> subsets(int[ 阅读全文
posted @ 2022-02-06 21:50 一刹流云散 阅读(21) 评论(0) 推荐(0) 编辑
摘要:##组合 class Solution { List<List<Integer>> sum=new LinkedList<>(); LinkedList<Integer> path=new LinkedList<>(); public List<List<Integer>> combine(int 阅读全文
posted @ 2022-02-05 11:54 一刹流云散 阅读(19) 评论(0) 推荐(0) 编辑
摘要:##左叶子之和 class Solution { public int sumOfLeftLeaves(TreeNode root) { if(root==null) return 0; int result=0; if(root.left!=null&&root.left.left==null&& 阅读全文
posted @ 2022-02-04 09:00 一刹流云散 阅读(23) 评论(0) 推荐(0) 编辑
摘要:##移除元素 class Solution { public int removeElement(int[] nums, int val) { int slow=0; int fast=0; for(fast=0;fast<nums.length;fast++) { if(nums[fast]!=v 阅读全文
posted @ 2022-02-03 12:04 一刹流云散 阅读(23) 评论(0) 推荐(0) 编辑
摘要:##有效的字母异位词 class Solution { public boolean isAnagram(String s, String t) { int[] record=new int[26]; for(char c:s.toCharArray()) { record[c-'a']++; } 阅读全文
posted @ 2022-02-02 20:56 一刹流云散 阅读(31) 评论(0) 推荐(0) 编辑
摘要:##NC105 二分查找-I 请实现无重复数字的升序数组的二分查找 给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1 数据范围:0≤len(nums)≤2×10 阅读全文
posted @ 2022-02-01 19:13 一刹流云散 阅读(76) 评论(0) 推荐(0) 编辑
摘要:class Solution { public ListNode reverseList(ListNode head) { ListNode pre=null; ListNode cur=head; ListNode temp=null; while(cur!=null) { temp=cur.ne 阅读全文
posted @ 2021-11-29 20:44 一刹流云散 阅读(7) 评论(0) 推荐(0) 编辑
摘要:class Solution { public boolean repeatedSubstringPattern(String s) { if (s.equals("")) return false; int len = s.length(); s = " " + s; char[] chars = 阅读全文
posted @ 2021-11-29 20:43 一刹流云散 阅读(6) 评论(0) 推荐(0) 编辑
摘要:class Solution { public String reverseWords(String s) { StringBuilder sb=removeSpace(s); reverse(sb,0,sb.length()-1); reverseEach(sb); return sb.toStr 阅读全文
posted @ 2021-11-29 20:42 一刹流云散 阅读(12) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示