- 博客(14)
- 收藏
- 关注
原创 课后题
第二章 线性表2.2.3 线性表的顺序表示 P191.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。#include <stdio.h>#define MaxSize 6typedef struct{ int data[MaxSize]; int length;}SqList;void InitList(SqList &L){ L.length = 0;}
2021-02-06 17:06:26 273
原创 121. 买卖股票的最佳时机
题目描述最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。解题思路❤❤只遍历一遍的话,只需记录最小值和相差最大值即可。JAVA代码(傻瓜做法)class Solution { public int maxProfit(int[] prices) { int max= 0; for(int i=0 ; i<prices.length-1 ; i++){ for(int j=i+1 ; j
2020-07-27 21:10:39 137
原创 26. 删除排序数组中的重复项
题目描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解题思路❤❤注意题目要求是在原数组上面改动,记住双指针方法,虽然很简单,但是很巧妙。JAVA代码(双指针)public int removeDuplicates(int[] nums) { if (nums.length == 0) return 0; int i = 0;
2020-07-27 21:01:05 105
原创 1. 两数之和
题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。解题思路❤记住哈希表写法,只用一次也是可解的。JAVA代码(傻瓜遍历)class Solution { public int[] twoSum(int[] nums, int target) { int i=0,j=0; int len = nums.l
2020-07-27 20:41:33 150
原创 71. 简化路径
题目描述解题思路❤❤先以斜杠为分隔符,处理字符串两个点返回上一级,即出栈一个点本级菜单,不用处理注意双斜杠,为空,不用处理其他情况入栈即可注意最后输出方式JAVA代码class Solution { public String simplifyPath(String path) { Stack<String> stack = new Stack<>(); String[] str = path.split("/"); /
2020-07-22 10:59:52 121
原创 232. 用栈实现队列
题目描述使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。解题思路 ❤用两个栈实现JAVA代码class MyQueue { public Stack<Integer> s1 = new Stack<Integer>(); public Stack<Integer> s2 = new Stack<In
2020-07-22 10:46:05 79
原创 ·144. 二叉树的前序遍历(前中后总结)
题目描述JAVA代码class Solution { public List<Integer> preorderTraversal(TreeNode root) { LinkedList<TreeNode> stack = new LinkedList<>(); LinkedList<Integer> res = new LinkedList<>(); if (root == null) return res;
2020-07-22 10:40:32 149
原创 ·394.字符串解码
题目描述注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。解题思路 ❤❤为什么用栈?括号内嵌套括号,需要从内向外生成与拼接字符串,这与栈的先入后出特性对应。辅助栈解法① 遍历字符串 s 中每个字符 c;② 当 c 为数字时,将数字字符转化为数字 multi,用于后续倍数计算;③ 当 c 为字母时,在
2020-07-18 16:31:09 121
原创 ·739. 每日温度
题目描述请根据每日气温列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。解题思路 ❤❤白痴方法:一个一个比较后
2020-07-17 21:37:18 181
原创 94. 二叉树的中序遍历
解题思路 ❤❤① 由于在“栈”标签下,没想递归方法… (而且List还用错了)JAVA代码(递归方法)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } //注意这个命名方法 * } */class Solution.
2020-07-11 23:42:43 147 1
原创 155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。解题思路 ❤❤首先,看了答案…知道要额外建一个最小栈,但不知道怎么存数据。答案:若push的值小于等于最小栈栈顶,则存入其次…java要把变量写在方法外,不能只在初始化方法里写其次…Integer的==和equals不一样!!! 比较数值应该使用.equals()!!!!public void testEquals() {int int1 = 12;int int2 = 12;Integer
2020-07-11 22:20:32 109
原创 20. 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:①左括号必须用相同类型的右括号闭合。②左括号必须以正确的顺序闭合。③注意空字符串可被认为是有效字符串。解题思路 ❤方法为:栈存左括号① 奇数可以直接判断为错误;② 别忘了边界情况,第一个就为有右括号;③ 以及!!java自带栈功能,别忘了!!④ (以及,不要忘记c怎么求数组长度了…strlen(s)… )JAVA代码(白痴写法)class Solution {
2020-07-11 20:46:56 148
原创 ·255.用队列实现栈
题解思路 ❤完全忘了java有自带的函数了而且完全忽略了题目要求的是队列功能实现栈。。JAVA代码class MyStack { Queue<Integer> queue; /** Initialize your data structure here. */ public MyStack() { queue= new LinkedList<>(); } /** Push element x onto stac
2020-07-11 20:46:24 165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人