算法
友人C菌
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
初级算法(十)--动态规划、设计问题、数学
初级算法(十)–动态规划、设计问题、数学1、引言动态规划1、爬楼梯2、买卖股票的最佳时机3、最大子序和4、打家劫舍解题步骤1、确定dp数组2、找到状态转移公式3、确定初始条件以及边界条件4、计算结果设计问题1、打乱数组2、最小栈数学1、Fizz Buzz2、计数质数3、3的冥2、动态规划2.1 爬楼梯 这题开始想的方法就是使用递归,但是力扣会显示超出时间限制。 /** * 方法一:递归,但是力扣会显示超时 * @param n原创 2022-04-24 17:11:20 · 241 阅读 · 0 评论 -
初级算法(九)----- 树、排序和搜索
初级算法(九)----- 树、排序和搜索1、引言1、将有序数组转换为二叉搜索树:二叉搜索树每个节点的左右两个字数的高度差的绝对值不超过12、合并两个有序数组3、第一个错误的版本2、将有序数组转换为二叉搜索树 这题可以采用递归的方式进行,由于数组是有序的,每次选取中间的节点作为根,如此构造出的二叉树就是二叉搜索树。 /** * 方法一:采用递归做 * 每次都选中间值做为节点 * @param nums * @return * 执行用时:原创 2022-04-18 18:09:26 · 446 阅读 · 0 评论 -
初级算法--树(八)
初级算法–树(八)1、引言1、验证二叉搜索树:节点的左子树只包含小于当前节点的数,右子树只包含大于当前节点的数2、对称二叉树3、二叉树的层序遍历二叉树的结构public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(){ } TreeNode(int val){ this.val=val; } TreeNode(int val,原创 2022-04-14 20:09:43 · 697 阅读 · 0 评论 -
初级算法(七)
初级算法(七)1、引言不带头节点的单链表//不带头节点的单链表public class ListNode{ int val; ListNode next; ListNode(){ } ListNode(int val){ this.val=val; } ListNode(int val,ListNode next){ this.val=val; this.next=next; }}J原创 2022-04-13 10:04:45 · 321 阅读 · 0 评论 -
初级算法(六)
初级算法(六)1、引言字符串1、最长公共前缀:一个函数可以查找字符串数组中最长公共前缀,如果不存在则返回" "单链表1、删除链表中的某个节点2、删除链表的倒数第N个节点3、反转链表2、最长公共前缀 要知道公共最长前缀的定义,这个前缀的字符串最重要的是连续的。采取默认字符串数组中的第一个字符串为公共最长的前缀。然后对第一个字符串进行不断截取。 /** * * @param strs 输入的字符串数组 * @return 返回的最长公共前缀原创 2022-04-08 19:08:57 · 568 阅读 · 0 评论 -
初级算法(五)
初级算法(五)1、引言1、验证回文串:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。2、字符串转换整数:将一个数字字符串转换为一个32位有符号整数。3、实现strStr()函数:即返回needle字符串在haystack字符串中第一次出现的位置。4、外观数列:给定一个正整数n,输出外观数列的第n项。countAndSay(1) = “1”,countAndSay(2) = "11"描述的是前一项的一个1.依次类推。2、验证回文串 和前面的找不同数,有点类原创 2022-04-04 19:55:44 · 1333 阅读 · 0 评论 -
初级算法(四)
初级算法(四)1、引言1、整数反转:给定一个32为的有符号整数,将x中的数字部分反转。输入:123,输出:3212、字符串中的第一个唯一字符:找到字符串中第一个不重复的索引,不存在返回-13、字母异位词:两个字符串中的字符出现次数相同被称为字母异位词2、整数反转 一开始,想的是先把数字转换为String,然后通过转换为数组,再倒序存放新的字符串中,然后再转换为整数。但是这种解决办法显然不可能,力扣的测试用例通不过。给的整数转换后的数有可能超过范围。因此只能在原来的基础上改变。 //执行用原创 2022-03-27 20:35:48 · 598 阅读 · 0 评论 -
初级算法(三)
初级算法(三)1、引言1、有效的数独:要求数字1-9在每一行只能出现一次,数字1-9在每一列只能出现一次。数字1-9在每一个小九格中只能出现一次2、旋转图像:将一个二维矩阵,将图像顺时针旋转90度3、反转字符串:将一个字符数组,反转数字2、有效的数独 这一波主要是利用Java中set集合中不能存在重复元素。 //使用hashset数据结构,去重 //执行用时:3ms,内存消耗:41.7MB public boolean isValidSudoku(char[][] bo原创 2022-03-24 19:08:34 · 1376 阅读 · 0 评论 -
初级算法(二)
初级算法(二)1、引言1、加一:给定一个整数组成的非空数组所组成的非负整数,在该数的基础上加一。输入:[1,2,3] 输出:[1,2,4] 或者输入:[9,9] 输出:[1,0,0]。2、移动零:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。不能复制数组,对数组原地操作。3、两数之和:给定一个整数数组nums 和一个整数目标值target,在该数组中找出和为目标值target的那两个整数,并返回他们的数组下标。2、加一加一的问题本质上就是进制运算,遇原创 2022-03-22 18:34:22 · 1094 阅读 · 0 评论 -
初级算法(一)
初级算法(一)1、引言这个笔记主要被是在leetbook中的初级算法题中数组的三个题进行记载。主要有三个:1、判断一个数组中元素是否有重复元素。2、找出数组中只出现一次的数字。3、返回两个数组的交集(交集中元素的次数必须是两个数组中都有的个数)2、数组中是否有重复元素 最先想到是一个暴力解决,就是两层for循环,虽然能解出来,但是力扣上可能会超出时间限制。所以这个解决办法并不是最优解。 //方法一:暴力解决,执行用时750ms,内存消耗:55.3MB,力扣上有可能会显示超出时间限制原创 2022-03-21 19:02:29 · 828 阅读 · 0 评论
分享