
算法
算法
小学生张三
这个作者很懒,什么都没留下…
展开
-
手撸早餐组合问题解法
小扣在秋日市集选择了一家早餐摊位,一维整型数组 staple 中记录了每种主食的价格,一维整型数组 drinks 中记录了每种饮料的价格。小扣的计划选择一份主食和一款饮料,且花费不超过 x 元。请返回小扣共有多少种购买方案。注意:答案需要以1e9 + 7 (1000000007)为底取模,如:计算初始结果为:1000000008,请返回1示例:输入:staple = [10,20,5], drinks = [5,5,2], x = 15 输出:6解释:小扣有 6 种购买方案,所选主食...转载 2020-10-11 18:46:21 · 442 阅读 · 0 评论 -
手撸反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]双指针方式解决:两种写法,执行效率一样class Solution { public void re...原创 2020-10-11 16:12:53 · 448 阅读 · 0 评论 -
手撸反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL第一种利用外部空间,申请一个动态扩容的数组或者容器,比如 ArrayList ,栈,都可以,遍历两次public ListNode reverseList(ListNode head) { if(head==null||head.next==null)原创 2020-10-10 12:42:21 · 197 阅读 · 0 评论 -
手撸二分查找
//二分查找法,在有序数组arr中,查找target//如果没有找到target,返回-1classSolution{publicintsearch(int[]nums,inttarget){//在[l...r]的范围里寻找targetintl=0,r=nums.length-1;while(l<=r){//当l==r时,区间[l...r]依然是有效的...原创 2020-10-10 10:26:40 · 232 阅读 · 0 评论 -
顺时针打印矩阵
虽然不是最优质的解法,但是执行效率还可以package com.example.ko;public class Demo { /** * 循环打印矩阵 * @param arrays * @return */ public int[] printMatrix(int[][] arrays){ if(null==arrays||arrays.length==0||arrays[0].length==0) { .原创 2020-10-09 21:27:38 · 100 阅读 · 0 评论 -
算法的时间、空间复杂度分析
大家都知道各种数据结构和算法的出现是为了让代码运行得更快,让代码存储时候更省空间,所以统计算法的执行效率和资源消耗是一个重要的参考指标.怎么分析和统计算法的执行效率和资源消耗?有一种是执行代码通过监控和统计得出来的数据叫"事后统计法",不过这个方法局限性很大,测试结果非常依赖测试环境的配置,而且受数据规模大小的影响也很大.所以,我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。这就是我们今天要讲的时间、空间复杂度分析方法。大 O 时间复杂度表示法算法的执行.原创 2020-09-18 17:38:35 · 646 阅读 · 0 评论 -
树结构之二叉树,用于手撸的简单版本
二叉树是树这种数据结构的一员,那么为什么要使用树?它有什么优点?因为树这种数据结构能同时具备数组查找快的优点以及链表插入和删除快的优点。二叉树的每个节点最多只能有两个子节点,通常叫左子树,和右子树.先来了解一下二叉树的基本性质1.怎么计算二叉树上某一层有多少个节点? x=某层;y=某层的节点数;y=2的(x次方减1); 代入现实: x=1;y=2的(1次方减1),y=2的0次方是1.所以1层有1个节点; 再次举例: x=3;y=2的(3次方减1),y=2的2次方是4.所以3层有...原创 2020-09-16 11:01:08 · 464 阅读 · 0 评论 -
java数据结构之“树”
它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。为什么要使用树?它有什么优点?因为树这种数据结构能同时具备数组查找快的优点以及链表插入和删除快的优点。树的常用术语 ①、路径:顺着节点的边从一个节点走到另一个节点,所经过的节点的顺序排列就称为“路径”。 ②、根:树顶端的节点称为根。一棵树只有一个根,如果要把一个节点和边的集合称为树,那么从根到其他任何一个节点都必须有且只有一条路径。A是根节点。 ③、父节点:若一个节点含有子节点,则这个节点称为其子原创 2020-09-15 20:51:53 · 214 阅读 · 0 评论 -
LRU算法,用于手撸的简单版本
废话不多说,先干后湿.package com.test;import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;public class LRUCache<k,v> extends LinkedHashMap<k,v> { private int size; public LRUCache(int initialSize){ super(in原创 2020-09-15 08:17:56 · 700 阅读 · 0 评论