![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java算法练习
文章平均质量分 60
用java语言进行算法练习
DXFGF
预备程序猿,努力学习中。。。
展开
-
java算法训练第十七天
目录题库一、杨辉三角1.双数组求解2.单数组求解二、旋转图像1.额外数组解法2.额外变量解法题库一、杨辉三角给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。原题1.双数组求解建立两个 list 集合,一个作为最终的返回结果,另一个作为暂时存储某一行的杨辉三角的结果,我们计算出杨辉三角的每一层的结果并替换存储在集合中,直到目标层数。代码如下: public List<Integer> getRow(原创 2022-03-25 16:16:33 · 578 阅读 · 0 评论 -
java算法训练第十六天
目录题库一、颜色分类1.三指针解法(个人想法,遍历数组一次)2.单指针解法(遍历数组两次)二、合并区间先排序,再判断题库一、颜色分类给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库的sort函数的情况下解决这个问题。原题1.三指针解法(个人想法,遍历数组一次)建立三个指针 red,blue,p ,red指针指向红色元素的末尾,blu原创 2022-03-24 21:34:45 · 593 阅读 · 0 评论 -
java算法训练第十五天
目录题库一、只出现一次的数字异或解法二、多数元素1.哈希表解法2.摩尔投票法三、三数之和排序加双指针解法总结题库一、只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。原题异或解法异或运算的性质:1.任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0=a。2.任何数和其自身做异或运算,结果是 0,即 a⊕a=0。3.异或运算满足交换律和结合律,即 a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。依靠这三条性质,原创 2022-03-23 21:58:09 · 568 阅读 · 0 评论 -
java算法训练第十四天
目录题库一、两数之和深度优先和哈希表解法二、二叉搜索树的最近公共祖先结点一次遍历解法总结题库一、两数之和给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。原题深度优先和哈希表解法利用深度优先思维进行遍历,然后把访问到的结点的值在哈希表中查找是否存在 k-root.val 的值,如果存在,则返回true;如果不存在,则把该结点的值加入哈希表中,直到遍历结束返回false。代码如下: Set<Integer>原创 2022-03-22 22:04:41 · 1393 阅读 · 0 评论 -
java算法训练第十三天
目录题库一、二叉搜索树中的搜索1.递归思维2.迭代思维3.当该二叉树不为搜索树(个人想法)二、二叉搜索树中的插入操作1.递归思维(个人想法)2.迭代思维三、两数相加双指针解法(个人想法)总结题库一、二叉搜索树中的搜索给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。原题1.递归思维运用二叉树的深度优先搜索,当访问到的结点的值大于目标值时,搜索结点的左子树,反之搜索原创 2022-03-21 20:45:45 · 414 阅读 · 0 评论 -
Java算法训练第十二天
目录题库一、翻转二叉树递归解法二、路径总和递归解法总结题库一、翻转二叉树给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。原题递归解法运用递归思维,题目可以从叶子结点开始翻转,但访问到的结点是叶子结点时则不做任何操作。代码如下: public TreeNode invertTree(TreeNode root) { if(root == null) return root; TreeNode left = in原创 2022-03-20 17:13:39 · 447 阅读 · 0 评论 -
java算法训练第十一天
文章目录题库一、二叉树的层序遍历广度优先和队列解法二、二叉树的最大深度递归解法三、对称二叉树递归解法总结题库一、二叉树的层序遍历给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。原题广度优先和队列解法建立集合存储最终数据,建立队列暂时存储数据。按从根到叶,从左到右的顺序遍历二叉树,把访问到的结点的值和左子结点的值,右子结点的值依次加入队列,然后再取出加入集合。代码如下:public List<List<Integer>>原创 2022-03-19 22:13:54 · 686 阅读 · 0 评论 -
java算法训练第十天
目录题库一、二叉树的三种遍历方式(递归思维)1.前序遍历2.中序遍历3.后序遍历二、验证二叉搜索树1.递归解法2.中序遍历解法总结题库一、二叉树的三种遍历方式(递归思维)给你二叉树的根节点 root ,返回它节点值的 前序(中序,后序) 遍历。1.前序遍历原题代码如下: public List<Integer> preorderTraversal(TreeNode root) { List<Integer> st = new ArrayList&原创 2022-03-18 21:52:36 · 281 阅读 · 0 评论 -
java算法训练第九天
目录题库一、有效的括号用栈解法(个人想法)二、用栈实现队列1.构造函数和属性2.push函数3.pop函数4.peek函数5.empty函数总结题库一、有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。原题用栈解法(个人想法)观察题目的括号要求,发现后出现的左括号要先配对,符合栈后进先出的思维。代码如下: Stack<Character>原创 2022-03-17 13:12:11 · 60 阅读 · 0 评论 -
java算法训练第八天
目录题库一、反转链表三指针解法二、删除排序链表中的重复元素1.双指针解法(个人想法,更节省空间)2.单指针解法总结题库一、反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。原题三指针解法建立三个工作指针 p1,p2,p3 ,遍历链表,p1指向当前元素,p2指向下一个元素,p3指向p2的下一个元素,依靠三个指针互相变化来反转链表。代码如下:if(head == null) return head; ListNode p1 = head,p2 = head.ne原创 2022-03-16 17:30:45 · 1465 阅读 · 0 评论 -
java算法训练第七天
目录题库一、环形链表1.哈希表解法2.快慢指针解法(花费时间更少)二、合并两个有序链表双指针解法三、移除链表元素指针、节点结合解法总结题库一、环形链表给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则原创 2022-03-15 22:06:45 · 592 阅读 · 0 评论 -
java算法训练第六天
目录题库一、字符串中的第一个唯一字符两次遍历解法二、赎金信统计字符解法三、有效的字母异位词1.排序比较解法2.统计字符解法总结题库一、字符串中的第一个唯一字符给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。原题两次遍历解法先遍历数组并使用HashMap存储字符和次数,再遍历一次查找第一个不重复的字符。代码如下:Map<Character,Integer> m = new HashMap<Character,Integer&g原创 2022-03-14 21:09:27 · 923 阅读 · 0 评论 -
Java算法训练第五天
目录题库一、有效数独一次遍历解法二、矩阵置零1.标记数组解法(空间消耗较大)2.标记变量解法(空间消耗较小,代码更繁琐)总结题库一、有效数独请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。1.数字 1-9 在每一行只能出现一次。2.数字 1-9 在每一列只能出现一次。3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。原题一次遍历解法创建三份空间,分别存储每一行,每一列,每一个小九宫格是否有效。代码如下:int[][]原创 2022-03-13 22:30:48 · 586 阅读 · 0 评论 -
java算法训练第四天
目录题库一、重塑矩阵直接计算(个人做法)二、杨辉三角List集合求解总结题库一、重塑矩阵在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;原创 2022-03-12 22:10:58 · 63 阅读 · 0 评论 -
java算法训练第三天
目录题库一、两个数组的交集||1.哈希表2.二、买卖股票的最佳时机1.个人想法2.总结题库一、两个数组的交集||给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。原题1.哈希表选用HashMap集合;先遍历两个数组中较小的一个,把它的数据和出现的次数储存在哈希表中,然后遍历另外一个数组,如果哈希表中有该数据,则减少次数。代码如下:i原创 2022-03-11 22:58:15 · 69 阅读 · 0 评论 -
java算法练习第一天
开始我的算法练习。原创 2022-03-09 19:48:08 · 252 阅读 · 0 评论 -
java算法练习第二天
目录题目一、两数之和1.暴力破解(结果时间过长)2.哈希表二、合并两个有序数组1.直接合并数组,再进行排序(结果时间过长)2.边排序,边合并总结题目提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下原创 2022-03-10 20:59:46 · 1059 阅读 · 0 评论