自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

文卿的藏剑山庄

你该好好瞧瞧,我身上除了金银玉石,还有这山居剑意。

  • 博客(211)
  • 收藏
  • 关注

原创 C语言设计题7-实现前缀树

前缀树(字典树)实现

2023-03-07 22:40:06 135

原创 C语言设计题6-实现一个魔法字典

实现一个魔法字典

2023-03-03 10:56:37 130

原创 C语言设计题练习5-设计循环双端队列

设计循环双端队列

2023-03-03 10:18:11 133

原创 C语言设计题练习4-设计循环队列

设计循环队列

2023-03-02 17:19:31 99

原创 C语言设计题练习3-设计链表

leetcode707 设计链表 C语言实现

2023-03-01 11:06:59 40

原创 C语言设计题练习2-设计哈希映射

lc706

2023-02-28 10:23:51 65

原创 C语言设计题练习1-设计哈希集合

leetcode705 C语言实现

2023-02-27 11:39:11 88

原创 同向双指针题目练习

leetcode同向双指针题目练习

2023-02-10 11:23:00 288

原创 NFS4协议

RFC8881文档对于网络文件系统的介绍

2023-01-12 12:41:14 950

原创 笔试-hw

第一题若干算子构成一个有向无环图,若算子A依赖算子B的输出,则仅当算子B执行完成后才能执行A,没有依赖关系的算子可以并行执行。已知每个算子的执行时间,求整个网络运行所需要的最小时间。输入描述:一共N+1行,第一行输入N,即算子总数第二到第N+1行包括算子名称 算子消耗时间 后继算子1 后继算子2 … 后继算子k(可能存在没有后继算子的算子)第二题第三题...

2021-09-26 16:53:01 162

原创 笔试-918-xhs

第二题有一个包含 n 个不相同整数的数组 arr = [a[0], a[1], …, a[n-1]]。 你可以随意交换数组中的任意两个元素的位置。一个数组如果满足 在0<i<n 区间 |arr[i] - arr[i-1]| (绝对值)的和最小,则称这个数组为漂亮数组。给到一个数组 arr , 计算并返回需要交换的最小次数,使得数组 arr 变为一个漂亮数组。样例arr = [7, 15, 12, 3]arr 对应的一种漂亮数组为[3, 7, 12, 15]. 为了变换成这样的数组,需要

2021-09-22 14:22:31 143

原创 【Java实现】带权重的随机数算法

我们按照顺序计算出权重的加和,把当前数字出现的权重加和前的值作为其权重范围的起点值,把加和后的值作为其权重范围的终点值。这样的话,我们就可以使用Random.next(100)来做随机数,然后判断随机数落在的范围,然后映射到对应的优惠券数值即可。import java.util.*;public class WeightRandom { private List<WeightElement> weightElements; public void initWeight(S

2021-09-13 22:20:44 1044

原创 【Java实现】汉字转化为数字

把一个汉字转化为对应的阿拉伯数字,代码如下:import java.util.*;public class Main { public static void main(String[] args) { Main m=new Main(); System.out.println(m.toNumber("四亿七百六十万五千四百零九")); } HashMap<Character,Integer> number=new HashMap&

2021-09-13 21:57:01 3686

原创 【Java实现】数字转化为汉字

数字转化为汉字:支持负数,小数点。Java代码:public class Main{ public static void main(String[] args) { //输出结果:负一亿四千零一十万零五百点零零五四 System.out.println("toChinese:"+toChinese("-140100500.0054")); } private static String toChinese(String str) { if(s

2021-09-12 22:39:01 3232 3

原创 笔试-822-aqy

822笔试-aqy第一题第二题第三题第一题sql题,查找选课女生最多的三个课程的名字及对应选课的女生数量SELECT subinfo.name,COUNT(*) AS girl_count FROM Student_Info s JOIN Subject_Register sub ON s.id=sub.student_id JOIN Subject_Info subinfo ON sub.subject_id=subinfo.id

2021-08-23 11:30:13 72

原创 笔试-822-cs

822笔试-cs第一题第二题第三题第四题第一题字典序的全排列第二题给定一个字符串和n个操作,操作可能有两种:第一个数字为2代表查询操作,查询与对应位置的字符最近的相同字符的距离。第一个数字为1代表插入操作,在字符串尾部插入字符如输入:“abcda”32 51 a2 5结果为41第一次查询,字符串为"abcda",距离第5个元素a的最近距离是4;第二次查询,字符串为"abcdaa",距离第5个元素a的最近距离是1.思路:用哈希表存储每一个字母的所在位置,每次遍历

2021-08-23 11:13:57 76

原创 剑指 Offer 13. 机器人的运动范围

地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3

2020-11-19 17:30:59 80

原创 283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)方法一:自己写的,遍历两次,第一次遍历的同时记录下非0数的个数,作为更新数组非零元素的下标。第二次遍历把后面的元素全部置0。class Solution { public void moveZeroes(int[] nu

2020-11-19 10:52:52 62

原创 剑指 Offer 38. 字符串的排列

输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]来源:力扣(LeetCode)用dfs+回溯的方法。本题要注意的一个地方就是可能会有重复的元素,不能重复计数,解决的办法是每次固定一个元素向下遍历的时候维护一个HashSet,一旦发现了重复元素就剪枝。class Solution { List<String&gt

2020-11-18 21:59:30 84

原创 剑指 Offer 46. 把数字翻译成字符串

给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 :输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”来源:力扣(LeetCode)思路:动态规划用dp[i]来表示前i个数字的翻译方法数。如果只翻译自己,比如对于

2020-11-14 16:46:07 74

原创 剑指 Offer 47. 礼物的最大价值

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?来源:力扣(LeetCode)简单直接的二维dp:class Solution { public int maxValue(int[][] grid) { int m=grid.length; int n=grid[0].

2020-11-14 14:45:21 92

原创 剑指 Offer 52. 两个链表的第一个公共节点

public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if(headA==null || headB==null) return null; ListNode A=headA,B=headB; while(A!=B){ if(A!=null){

2020-11-14 14:24:04 58

原创 剑指 Offer 68 二叉树的最近公共祖先

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root==null) return null; if(root.val>p.val && root.val

2020-11-14 13:39:23 59

原创 1122. 数组的相对排序

给你两个数组,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中。对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]提示:arr1.length, arr2.lengt

2020-11-14 13:27:27 86

原创 72. 编辑距离

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符来源:力扣(LeetCode)二维dp冲啊class Solution { public int minDistance(String word1, String word2) { int n1=word1.length(); int n2=word2.length();

2020-11-05 14:20:06 54

原创 剑指 Offer 42. 连续子数组的最大和

输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)简单易懂的动态规划代码:class Solution { public int maxSubArray(int[] nums) { int max=nums[0],sum=0;

2020-11-04 23:35:31 54

原创 剑指 Offer 58 - 翻转字符串

剑指 Offer 58 - I. 翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后

2020-11-04 16:12:50 78

原创 剑指 Offer 57 - II. 和为s的连续正数序列

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]来源:力扣(LeetCode)双指针的方法,如果两个指针之间的数字加起来比target小,就向后移动右指针,如果加起来比target大,就向后移动左指针,直至两

2020-11-04 14:35:22 43

原创 剑指 Offer 57. 和为s的两个数字

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]来源:力扣(LeetCode)class Solution { public int[] twoSum(int

2020-11-04 12:13:45 165

原创 剑指 Offer 56 - 数组中数字出现的次数

剑指 Offer 56 - I. 数组中数字出现的次数一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]来源:力扣(LeetCode)思路:如果把题目改成“一个数组中除了一个数字之外,其他数字都出现了两次”

2020-11-03 21:12:42 57

原创 剑指 Offer 54. 二叉搜索树的第k大节点

给定一棵二叉搜索树,请找出其中第k大的节点。思路:中序遍历递归解法:class Solution { public int kthLargest(TreeNode root, int k) { List<Integer> res=new ArrayList<Integer>(); inorder(root,res); return res.get(res.size()-k); } public void i

2020-11-03 17:05:16 74

原创 剑指 Offer 53 - 在排序数组中查找数字

剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0来源:力扣(LeetCode)最简单的遍历方法:class Solution { public int search(int[] nums, int target) { for(

2020-11-03 16:23:42 62

原创 941. 有效的山脉数组

给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < … A[i-1] < A[i]A[i] > A[i+1] > … > A[A.length - 1]来源:力扣(LeetCode)第一次写的代码:class Solut

2020-11-03 10:39:48 38

原创 349. 两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)解法:HashSet利用Set不可重复、无序性的特点class Solution { public int[] interse

2020-11-02 22:01:30 77

原创 1207. 独一无二的出现次数

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。来源:力扣(LeetCode)方法一:先用一个HashMap来存储每个元素出现的次数;再用一个HashSet来存储HashMap里各个键值出现的次数。如果HashMap和HashS

2020-10-28 11:05:15 115

原创 剑指 Offer 28. 对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。来源:力扣(LeetCode)一不小心写出了最标准的正确解法:class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return isSym(root.left,root.right); }

2020-10-27 16:50:33 38

原创 剑指 Offer 27. 二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。来源:力扣(LeetCode)思路:先判断是否是空,然后交换,最后递归class Solution { public TreeNode mirrorTree(TreeNode root) { if(root==null) return null; if(root.left==null && root.right==null) return roo

2020-10-27 16:48:33 144

原创 剑指 Offer 26. 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。来源:力扣(LeetCode)注意第一个isSubStructure是从头开始判断的,因此如果B是空就要返回false而第二个isSubStructure2是在已经有根节点相同的前提下进行的判断,此时如果B是空就返回trueclass Solution { public boolean isSubStructure(TreeNode A, TreeNode

2020-10-26 19:41:52 48

原创 剑指 Offer 22. 链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)两次遍历的方法:class Solution { public ListNode getKthFromEn

2020-10-26 13:27:47 52

原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。来源:力扣(LeetCode)双指针:class Solution { public int[] exchange(int[] nums) { int left=0,right=nums.length-1; while(lef

2020-10-26 13:11:43 66

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除