- 博客(22)
- 收藏
- 关注
原创 数据结构,关于链表的问题,为何直接free()不会造成断链。引用的好处
void Del_x(Linklist &L,int x){ LNode *p; if(L==NULL){ return ; } if(L->data==x){ p=L; L=L->next; free(p); Del_x(L,x); } else( Del_x(L->next,x); ) } 首先如果第一个点data就为x;那么直接删除,不存在断链问题; 直到发...
2020-04-08 10:13:23
6223
5
原创 关于java新手入门心得
本人本科专业地理信息科学,研究生转为软件工程专硕。 在学习初期,对项目有一种执念,但是又不知道如何去开展一个项目。迷恋于网上的视频资源。其实初期对于非科班的同学来说视频学习有利有弊,视频学习资料,信息密度低,学习进度慢,看别人操作好像挺简单看完以为会了,其实忽略了最重要的实操,和每个人必须经历的踩坑过程。 今天太晚了,如果有人看的话,后续继续更。 ...
2021-08-06 23:26:12
182
1
原创 15.三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4] 输出:[[-1,-1,2],[-1,0,1]] 解题思路 1.首先对数组进行排序,排序后固定一个数 nums[i],再使用左右指针指向 nums[i]后面的两端num[mid]和nums[right] 2.此时将三个数相加和为sum 3.
2021-02-26 23:11:06
134
原创 leetcode 105.从前序与中序遍历构造二叉树
从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 解题思路 1.前序遍历的第一个值为根节点 2.树中没有重复元素,所以可以找到根节点在中序遍历的数组中的位置,所以可以知道左右子树的个数,和左右子树的前序遍历和中序遍历 3.然后继续递归,返回根节点 4.递归结束条件为pre_left>pre_right||.
2021-02-25 17:31:37
253
原创 103. 二叉树的锯齿形层序遍历
给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回锯齿形层序遍历如下: [ [3], [20,9], [15,7] ] 解题思路 1.基本思路模仿二叉树的层序遍历 2.定义一个level变量判断层数的奇偶 3.如果需要从右到左排序 方法一:list为数组,将list翻转 Connections.reverse(list
2021-02-05 22:16:38
175
原创 102. 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其层序遍历结果: [ [3], [9,20], [15,7] ] 解题思路 1.返回一个二维数组所以创建一个二维数组空间, 创建一个Integer型数组存储每行数据 创建一个队列,用来遍历每层节点 List<List<Integer>> res=new ArrayList<
2021-02-04 23:10:57
177
原创 100.相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / 2 3 2 3 [1,2,3], [1,2,3] 输出: true 解题思路 递归 1.从根节点比较两边节点是否为空,都为空则返回true 2.如果两边只有一个为空返回false 3.如果两边值不同返回false 4.都不为空且相等,则继续递归,比较左右节点。 class Solu
2021-02-02 22:38:39
134
原创 leetcode 70. 爬楼梯
题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 3. 1 阶 + 1 阶 + 1 阶 4. 1 阶 + 2 阶 5. 2 阶 + 1 阶 解题思路 动态规划 class Solution { public int c
2021-01-28 20:25:24
119
原创 window环境下服务启动tomcat时 执行Runtime.getRuntime().exec()无效
在这里插入图片描述 在的web应用程序中需要使用 runtime 来执行exec 来运行一个流量接收程序,我在window下使用eclipse 集成tomcat调试,没有一点问题,exec能够运行外部的cmd。把程序部署到 linux 的tomcat服务下,exec不能执行cmd,不报错。 经过上万查资料发现,是用户权限的问题,使用eclipse +tomcat开发,程序是以登录者的权限运行,通常就是admin了。当把tomcat注册成服务,并部署web的时候就会出现问题了。因为tomcat运行时默认使用自
2021-01-27 19:55:32
1376
2
原创 leetcode 67.二进制求和
题目 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b = “1011” 输出: “10101” 提示: 每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。 1 <= a.length, b.length <= 10^4 字符串如果不是 “0” ,就都不含前导零。 解题思路 模拟进位 1.将两个字符串的相应位数相加进位 2.定
2021-01-27 19:42:20
118
原创 字母异位词分组
字母异位词分组 class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String, List<String>> map = new HashMap<String, List<String>>(); for (String str : strs) { char[] arra
2020-12-14 10:00:10
184
原创 leetcode 376 摆动序列
标题376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。 例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。 给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一
2020-12-12 16:56:41
408
原创 Dota2参议员
Dota2 参议员 class Solution { public String predictPartyVictory(String senate) { /* 1.把R和D分成两个队列,每个队列存放这个数字在字符串中的位置 2.将队列的列首元素poll出,相比较哪个小就将元素数字加n又插入到队尾 3.当有队列为空时,循环结束 */ int n=senate.length(); Queue<Integer> queue1=new LinkedList<Integer>();
2020-12-11 20:39:16
112
原创 56.合并区间
合并区间 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: intervals = [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: intervals = [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。 解题思路: 1.首先将所有区间按照左边的数的大小进行排序。 2.首
2020-11-12 16:41:08
288
原创 922. 按奇偶排序数组 II
922. 按奇偶排序数组 II 给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。 本题思路:如果偶数位上都是偶数那么排序就完成。 1.判断偶数位上的数是否为偶数,如果是则遍历下一个偶数位。 2.如果不是则从奇数位开始遍历找到奇数味上的偶数和这个偶数位的奇数互换 3.写一个互换的函数。 class Solution { public int[]
2020-11-12 16:27:58
113
转载 关于DNS、socket和port端口的理解
1.DNS DNS服务器有着相当全的域名和IP,当你输入一串网站的时候,这串网站并不会直接访问,而是先将这个网站发送给DNS服务器,DNS服务器帮你把这串网站变成了IP地址,然后返回给你的电脑,你再访问这个IP地址,这样就解决了IP难记,而域名不能直接访问的问题了。 2.socket socket是在应用层和传输层之间的一个抽象层,socket本质是编程接口(API),它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。TCP/IP只是一个协议栈,必须要具体实现,同时还要提供
2020-06-07 16:41:55
1498
原创 11. 盛最多水的容器
盛最多水的容器 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。 class Solution { public: int maxArea(v...
2020-04-09 15:01:50
147
原创 26. 删除排序数组中的重复项
删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 class Solution { public: int removeDuplicates(vector<int>& nums) { ...
2020-04-08 22:09:05
136
原创 无重复字符的最长子串
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的...
2020-04-06 21:10:07
139
原创 数组1. 两数之和
两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] clas...
2020-04-05 19:57:35
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅