编程题
粉丝头子的故事
想吃,想喝,想玩,想乐
展开
-
K 个一组翻转链表
K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 进阶: 你可以设计一个只使用常数额外空间的算法来解决此问题吗? 你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。 class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode .原创 2021-05-04 20:07:39 · 59 阅读 · 0 评论 -
顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) {原创 2021-04-19 09:55:22 · 43 阅读 · 0 评论 -
斐波那契数列问题
文章目录1.矩形覆盖2.跳台阶3.跳台阶扩展 1.矩形覆盖 我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? public class Solution { public int rectCover(int target) { int[] dp=new int[target+1]; if(target<=2) return target; dp[1原创 2021-04-19 09:16:13 · 45 阅读 · 0 评论 -
层次遍历二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。 public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> res=new ArrayList<>(); if(root==null) return res; ArrayList<原创 2021-04-19 09:06:15 · 55 阅读 · 0 评论 -
反转链表
输入一个链表,反转链表后,输出新链表的表头。 public class Solution { public ListNode ReverseList(ListNode head) { ListNode pHead=head; if(head==null) return null; ListNode second=pHead.next; ListNode three=null; pHead.next原创 2021-04-19 08:12:46 · 46 阅读 · 0 评论 -
两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ListNode p1=pHead1; ListNode p2=pHead2; while(p1!=p2){原创 2021-04-19 08:11:30 · 39 阅读 · 0 评论 -
leetcode回溯算法总结
17. 电话号码的字母组合 46. 全排列 47. 全排列 II 39. 组合总和 40. 组合总和 II 491. 递增子序列 回溯算法入门级详解 + 练习(持续更新) 文章目录17. 电话号码的字母组合46. 全排列47. 全排列 II39. 组合总和 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 class Solution { public.原创 2021-04-05 16:14:36 · 263 阅读 · 0 评论 -
分治法
108. 将有序数组转换为二叉搜索树 104. 二叉树的最大深度 105. 从前序与中序遍历序列构造二叉树 108. 将有序数组转换为二叉搜索树 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 class Solution { private TreeNode buildTree(int[] nums,int left,int right){原创 2021-04-05 12:15:27 · 53 阅读 · 0 评论 -
440. 字典序的第K小数字
440. 字典序的第K小数字 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。 注意:1 ≤ k ≤ n ≤ 109。 输入: n: 13 k: 2 输出: 10 解释: 字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。 ...原创 2021-04-05 11:11:41 · 66 阅读 · 0 评论 -
合并链表
21. 合并两个有序链表 23. 合并K个升序链表 文章目录21. 合并两个有序链表23. 合并K个升序链表 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode t1=l1,t2=l2; ListNode head=new Li.原创 2021-04-04 20:33:41 · 119 阅读 · 0 评论 -
2. 两数相加
2. 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode t1=l1,t2=l2; ListNode head原创 2021-04-04 15:18:06 · 49 阅读 · 0 评论 -
两数之和
leetcode 1 号算法题:两数之和 leetcode 167 号算法题:两数之和Ⅱ - 输入有序数组 leetcode 170 号算法题:两数之和Ⅲ - 数据结构设计 leetcode 653 号算法题:两数之和Ⅳ - 输入 BST leetcode 15 号算法题:三数之和 leetcode 18 号算法题:四数之和 培养算法思维【逐渐优化,一直到最优】提升编程内功 - 两数之和 文章目录leetcode 1 号算法题:两数之和leetcode 167 号算法题:两数之和Ⅱ - 输入有序数组le.原创 2021-04-04 14:54:35 · 99 阅读 · 0 评论 -
回溯方法总结
文章目录幂集 幂集 编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。 class Solution { public void backtrack(List<List<Integer>>list,List<Integer>templates,int[] nums,int start){ list.add(new ArrayList<>(templates)); for(int i=start;i<num原创 2021-03-27 15:05:22 · 62 阅读 · 0 评论 -
两数之和——牛客NC61
给出一个整数数组,请在数组中找出两个加起来等于目标值的数, 你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。 注意:下标是从1开始的 假设给出的数组中只存在唯一解 例如: 给出的数组为 {20, 70, 110, 150},目标值为90 输出 index1=1, index2=2 class Solution { public: /** * * @param numbers int整型vector原创 2021-03-08 20:11:54 · 99 阅读 · 0 评论 -
寻找第K大——牛客NC88
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。 1.快排 class Solution { public: int findKth(vector<int> a, int n, int K) { // write code here int res=quickSort(a,0,n-1,K,n); return res;原创 2021-03-08 19:56:55 · 67 阅读 · 0 评论 -
二叉树层次遍历——牛客NC15
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3], [9,20], [15,7] ] 题解: /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * *原创 2021-03-08 18:57:21 · 114 阅读 · 0 评论