自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 Leetcode题目记录

【代码】Leetcode题目记录。

2023-04-24 20:07:40 112

原创 SpringBoot Web开发实战

SpringBoot最大的特点是自动装配;开发步骤为:创建应用、选择模块1. 静态资源问题一.首先创建工程文件,注意到name和artifact取名一样,都是项目名;group和package name一样,都是目录名

2021-12-13 19:48:10 442

原创 Springboot 简单程序+yaml语法和对象值修改+多配置文件yaml指定选择 +自动配置

package com.kuang.helloworld.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloC..

2021-12-09 17:00:53 779

原创 Java哈希表小结

class Solution { public int lengthOfLongestSubstring(String s) { HashMap<Character, Integer> window = new HashMap<Character, Integer>(); int left = 0,right=0; int res=0; while(right<s.length()){

2021-11-29 19:39:44 200

原创 Java输入输出小结

import java.util.Scanner;public class HelloWorld { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int m = scanner.nextInt(); int n = scanner.nextI

2021-11-29 11:21:56 162

原创 面试222222

面试题库2==判断括号是否合法 ()(()() || (()()) || ())() ||()() ====旋转数组--二分法扩展!---整数数组 nums 按升序排列,数组中的值 互不相同,把数组尾部一部分旋转到前面,然后在数组中搜索target的下标 [4,5,6,7,0,1,2], target = 0 输出5 ====经典二分查找--在排序数组中查找数组的前后索引,或者出现次数 5 7 7 8 8 10 target=8 输出2 ====跳跃游戏====下一个排列====两两交换链表中的节点=

2021-09-16 21:17:12 255

原创 2021.09.06 笔试记录

华为机考第二题记录~#include<bits/stdc++.h>using namespace std;const int N=1e5+10;unordered_map<string,int>id;//建立哈希表string val[N]; //N维度的,变成二维vector<int>e[N];//存子概念vector<string>son[N]; //存直系后代int cnt;//子函数定义int getid(string s){

2021-09-06 10:33:52 98

原创 每次面试前必看笔试题汇总~~~~~~~~~~~~~~~~~~~~~~~~~

题目1:判断链表是否有环#include<bits/stdc++.h>using namespace std;struct ListNode{ int val; ListNode* next; ListNode():val(0),next(nullptr){} ListNode(int x):val(x),next(nullptr){}}; //写个类class Solution{public: /*bool hasCycle(ListNode* head){ i

2021-08-21 20:39:38 210

原创 一个简单的例子:自己写类和结构体实现链表反转~ + 相交链表

有的时候面试为了节约时间问下面试官是否可以写主函数。但是为了不亏,可以写完结构体和class,然后有时间可以继续下面的main函数完成输入~~所以我们以后涉及到链表题目,只需要写模块1 和模块2即可,后面的main看情况。//自己定义结构体实现反转链表 #include<bits/stdc++.h>using namespace std;struct ListNode{ int val; ListNode* next; ListNode():val(0),next(nullpt

2021-08-17 19:25:06 149

原创 美团8.15 笔试复盘

第一题:第一行T表示有T组来判断,第二行是这个第一组的元素个数,接着是元素的全部输出,,,,不断输出T组输出是对每一组的判断,如果能排列组成1-2 -3这样的话输出yes不然输出NO#include<bits/stdc++.h>using namespace std;int main(){ int T; cin>>T; vector<vector<int>>res; for(int i=0;i<T;i++){

2021-08-15 18:29:16 205 1

原创 阿里+贝壳+荣耀笔试复盘

阿里第一题:输入一个编号 n代表数中中元素个数,第二行输入若干个整数,代表数组中的元素在一行中输出一个编号,代表在这个元素后分割可以使得两个数组的权重的乘积最大。如果有多个最佳答案,任意输出一个即可。输入31 2 3输出2思路:两个数加起来固定,在变化过程中求乘积最大,则x+y=m,我们求 2xy=m2-x2-y2,求xy的最大值就是求x2+y2的最小值。x2+y2=2x2-2mx+m2 ,当且仅当x=m/2的时候,x2+y2最小。这给我们启示,我们划分数组的时候两侧元素之和越接

2021-08-14 10:48:08 765

原创 剑指 Offer 59 - I. 滑动窗口的最大值 ---最大堆优先队列 或者单调队列!!!!!!

class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { int n = nums.size(); if(n == 0) return {}; deque<int> q; for (int i = 0; i < k; ++i) { while (!q.em.

2021-08-13 16:01:51 75

原创 剑指 Offer 58 - I. 翻转单词顺序 !!!!!!!! 面试可能会问

有时间可以看下这篇https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/solution/yi-ge-mo-ban-shua-bian-suo-you-zi-fu-chu-x6vh//////////////注意就是 string和 vector一样是可以进行push_back 和pop_back()的!class Solution {public: string reverseWords(string s) { .

2021-08-12 17:31:03 60

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

class Solution {public: vector<int> singleNumbers(vector<int>& nums) { int x = 0, y = 0, n = 0, m = 1; for(int num : nums) // 1. 遍历异或 n ^= num; while((n & m) == 0) // 2. 循环左移,计算 .

2021-08-12 10:11:54 53

原创 最长公共前缀!!!!!!!!!!!!!!!!!!!!!!!

class Solution {public: string longestCommonPrefix(vector<string>& strs) { if (!strs.size()) { return ""; } string prefix = strs[0]; int count = strs.size(); for (int i = 1; i < count; .

2021-08-11 09:43:55 60

原创 经典二分,查找左右边界的二分法!!!!!!

class Solution {public: int search(vector<int>& nums, int target) { int left=0,right=nums.size()-1; //查找右边界,让i不断增加 while(left<=right){ int mid=left+(right-left)/2; if(nums[mid]<=target) .

2021-08-10 16:33:24 169

原创 MySQL刷题集锦!!!!!!!!!!!

题目思路:(1)首先需要加distinct去重。假设 5-23(入职最晚日期)入职的有a,b,c 3人;5-22(入职第二晚日期)入职的有d,e 2人;5-21(入职倒数第三晚)入职的有f,g,h 3人;5-21前入职的若干…若 不加distinct去重,那么按照日期倒序,limit 2,1(从倒数第2行开始,取一条数据)的查询结果为 5-23加了distinct去重,会按入职日期进行分组,多个相同入职日期会分为一组,这样limit 2,1的结果即为 5-21。(2)外层的where条件中根

2021-08-05 10:45:14 577

原创 科大迅飞笔试1

题目:输入一行数长度是N,然后有m行个锦囊可以改变这个数组,每个锦囊有2个元素,第一个元素是最多可以改变x个元素,第二个元素是可以改成xx这样得值。计算怎们使用锦囊让这组数改变后和最大如:5 31 2 3 4 51 54 43 3输出22#include<bits/stdc++.h>using namespace std;bool cmp(vector<int>a,vector<int>b){ return a[1]>b[1];}int

2021-08-01 09:38:40 87

原创 剑指 Offer 35. 复杂链表的复制

class Solution {public: Node* copyRandomList(Node* head) { if(head == nullptr) return nullptr; Node* cur = head; unordered_map<Node*, Node*> map; // 3. 复制各节点,并建立 “原节点 -> 新节点” 的 Map 映射 while(cur != null.

2021-07-31 16:01:29 46

原创 1.活动安排。计算可参加的最大活动数

题目:  有个叫做“嘻哈华”的同学,他所在的学校将举办一次活动,现在他想知道一个教室最多能安排的活动数?现在告诉他活动开始时间与结束时间,问:最多活动数?思路:  这个时间可以是数字,也可以是字符串形式如“11:25”或者“03:21”,注意到我们可以用sort对字符串进行排序,只要他们是长度相同的,尽管中间有:但是都有那就相同不会影响的!!!所以遇到这种输入不要慌!直接排序  这个题目的思路就是贪心原则,自定义排序规则对时间的结尾进行排序,结尾越靠近前面就排序到前面,就是对结尾从小到大排序。贯彻贪

2021-07-31 10:43:21 488

原创 剑指 Offer 30. 包含min函数的栈

class MinStack {private: stack<int>valStack; stack<int>minStack;public: MinStack(){ //构造函数,每次创建的时候调用。 while(!valStack.empty())valStack.pop(); //这边其实可以不写 算了写就写了吧 while(!minStack.empty())minStack.pop(); } .

2021-07-30 16:31:49 39

原创 面试题31:栈的压入和弹出序列,根据栈的压入和弹出序列来判断是他们是不是正确的!!!

思路:  这道题感觉在面试中很容易被问到,因为的确感觉不是非常难。可以用模拟的思路来写。就是遍历压入序列不断压入栈,一旦栈非空且与弹出序列相同就进行压出,然后知道序列不同了,说明要进新元素了,或者全部消耗了;如果压入和弹出步对等,最终的结果就是栈非空!!!class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {

2021-07-30 16:12:08 40

原创 剑指 Offer 29. 顺时针打印矩阵

思路:   用模拟的方式,非常妙,学习下方向存储矩阵int directions[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; //每一行代表一个方向,然后是x和y控制上下和左右;这边是右下,左上class Solution {private: int directions[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};public: vector<int> spiralOrder(ve

2021-07-30 15:50:35 59

原创 面试可能会问到: 二叉树递归~~~理解递归的本质!!

思路:这道题是很经典的递归题,返回二叉树的镜像:既然是递归,我们就要明确递归的意义:假设我们对:TreeNode* mirrorTree(TreeNode* root) 这个函数做递归,什么意思!重复调用,那这个函数是什么功能 :这个函数实现了对输入root作为根节点的二叉树进行镜像翻转!然后看返回,返回当前根节点!!好,我们递归首先对根节点记录左右节点,然后翻转,然后左右节点进去之后继续调用,以左节点为根节点反转,以右节点为根节点反转注意到 return nullptr是针对最后一层的,而ret

2021-07-30 11:11:06 71

原创 剑指Offer26:树的子结构-----树查找要想到递归~

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSubStructure(TreeNode* .

2021-07-30 10:45:54 29

原创 剑指 Offer 22. 链表中倒数第k个节点----双指针重现

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* getKthFromEnd(ListNode* head, int k) { ListNode*t.

2021-07-29 15:40:00 49

原创 双指针111111

class Solution {public: vector<int> exchange(vector<int>& nums) { int left = 0, right = nums.size() - 1; while (left < right) { if ((nums[left] & 1) != 0) { //left寻找下一个偶数,也就是待变换的 left.

2021-07-29 12:56:15 50

原创 常规快速幂的写法!!!!!!!!!!!!!!!!!!!!!1

class Solution { public double myPow(double x, int n) { if(n==0) return 1; long N=n; //防止负数最大反转出错 if(N<0){ x=1/x; N=-N; } double result=1; while(N>0){ if(N%2==

2021-07-29 11:33:04 61

原创 剪绳子---动态规划和贪心

class Solution {public: int cuttingRope(int n) { /* * 三种特殊情况: * 1、长度为1时,没法剪,最大乘积为0 * 2、长度为2时,最大乘积为1 × 1 = 1 * 3、长度为3时,最大乘积为1 × 2 = 2 */ if (n <= 3) return n - 1; /* * 创建动.

2021-07-29 11:06:43 81

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

思路:  矩阵搜索问题,如果符合条件就加入队列进行扩张!!!这样子的。class Solution { // 计算 x 的数位之和 int get(int x) { int res=0; for (; x; x /= 10) { res += x % 10; } return res; }public: int movingCount(int m, int n, int k) {.

2021-07-29 09:48:59 53

原创 剑指 Offer 07. 重建二叉树

class Solution {private: unordered_map<int, int> index;public: TreeNode* myBuildTree(const vector<int>& preorder, const vector<int>& inorder, int preorder_left, int preorder_right, int inorder_left, int inorder_right) {

2021-07-28 14:37:54 29

原创 二叉树中的第二小节点~~记录父节点

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *.

2021-07-27 09:16:03 106

原创 多多笔试7.25笔试复盘

题目1:  输入一个N代表组数,接下来输入N组,每组2个数字空格隔开,代表线段的两端,如果存在任意一对线段存在包含关系就返回true,否则返回false.思路:  考虑两两组合判断,时间复杂度是o(N^2),一种排序,一种不排序,但是遍历时要考虑先后包含关系#include<bits/stdc++.h>using namespace std;int main(){ int N; cin>>N; vector<vector<int>>

2021-07-26 16:06:06 94

原创 1743. 从相邻元素对还原数组

思路:   这个题目挺妙的,注意到就是相邻包括了左相邻和右相邻,在数组开头和结尾的数字只有1次相邻。因此我们可以把所有数字对应的相邻元素作为哈希表的值存储,然后遍历哈希表,如果值维度是1,说明这个是开头或者结尾得元素。中间得元素相邻是2个得。   然后从后续依次,选择相邻中没走过的元素连接即可。class Solution {public: vector<int> restoreArray(vector<vector<int>>& adjacen.

2021-07-25 11:27:41 46

原创 1893. 检查是否区域内所有整数都被覆盖

class Solution {public: bool isCovered(vector<vector<int>>& ranges, int left, int right) { int n=ranges.size(); int count=0; for(int index=left;index<=right;index++){ for(int i=0;i<n;i++){ .

2021-07-23 16:24:22 38

原创 华为机考题库小试牛刀

HJ13 句子逆序题目:  将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I” 所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符输入:I am a boy输出:boy a am I#include<bits/stdc++.h>using namespace std;int main(){ string s; getline(cin,s); stringstream ss(s);

2021-07-22 19:27:01 299

原创 138. 复制带随机指针的链表

题目:  给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。  构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。思路:  采用哈希表+回溯的方式。如果只需要进行next指针,那我们直接遍历就行。

2021-07-22 13:59:14 51

原创 148 排序链表--自定义排序

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next.

2021-07-19 15:54:02 106

原创 双指针or滑动窗口问题汇总~~~ 持续更新 2021.7.20

1838. 最高频元素的频数题目:  元素的 频数 是该元素在一个数组中出现的次数。  给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。思路:  我发现这种花里胡哨难以确定选择规律的题目要么就是动态规划,要么就是基于排序后的一些操作。在这里我们想到,频数对应的元素最终还是来自数组中原有的元素,所以他问的是最大可能频数,这里的可能也是可以的意思。因为1 1

2021-07-19 15:19:38 111

原创 面试题 10.02. 变位词组 ---基于哈希表的字符串排序~~~

class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { //整体还是基于排序的思路 unordered_map<string,vector<string>>map; vector<vector<string>>res; for(auto & st.

2021-07-18 10:38:12 74

空空如也

空空如也

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

TA关注的人

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