
日常刷题记录
不爱写程序的程序猿
费曼学习法,就是授人以渔来巩固自己的知识,写博客的意义也亦如此
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
华为机试练习记录(python3)
My 刷题log原创 2023-03-21 19:07:08 · 306 阅读 · 1 评论 -
NC33 合并两个排序的链表
文章目录1.方法1(非递归)2.方法2 (递归)1.方法1(非递归)/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode *vhead = new .原创 2022-03-03 23:09:30 · 384 阅读 · 0 评论 -
NC55 最长公共前缀
1.横向遍历class Solution {public: /** * * @param strs string字符串vector * @return string字符串 */ static string getprefix(string s1, string s2) { int length = min(s1.size(), s2.size()); int index = 0; while (i.原创 2022-01-29 17:09:27 · 845 阅读 · 0 评论 -
NC61 两数之和
1.暴力解法时间复杂度O(N),空间复杂度O(N2N^2N2)class Solution {public: /** * * @param numbers int整型vector * @param target int整型 * @return int整型vector */ vector<int> twoSum(vector<int>& numbers, int target) { .原创 2022-01-28 20:25:13 · 529 阅读 · 0 评论 -
nowcoder-求平方根
求平方根-且要向下取整。这种题目实际上考的是要我们使用二分法去无限逼近那个整数。值得注意的是找到的条件判断-因为是向下取整所以:mid<x/mid && (mid+1)>x/(mid+1)mid<x/mid \ \&\& \ (mid+1)>x/(mid+1)mid<x/mid && (mid+1)>x/(mid+1)class Solution {public:.原创 2022-01-20 21:55:03 · 382 阅读 · 0 评论 -
nowcoder-数组中只出现一次的数(其它数出现k次)
这道题肯定是利用位运算,但是不能使用异或。class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param arr intvector * @param k int * @return int */ // 每个二进制位求和,如果某个二进制位不能被k整除,那么只出现一次的那个数字在这个二进制位上为1。 int fo.原创 2022-01-17 22:17:11 · 349 阅读 · 0 评论 -
nowcoder-链表中环的入口结点
1.哈希表解法首先这题要我们找链表的环入口结点,最常规易懂的解法就是遍历整个链表结点,然后用哈希表来存储已访问过的结点,最后进行对比。 若该结点已存在哈希表中,则代表该结点是我们要找的环形链表的入口结点(找到第一个已经存在过的结点就是入口结点-可以验证);否则把结点添加到哈希表中,继续往下遍历。时间复杂度O(n)O(n)O(n) 空间复杂度O(n)O(n)O(n)/*struct ListNode { int val; struct ListNode *next; List.原创 2022-01-16 22:54:20 · 350 阅读 · 0 评论 -
nowcoder-买卖股票的最好时机(一)
最简单的套路依旧是暴力枚举数组中所有的两个数差值;class Solution {public: /** * * @param prices int整型vector * @return int整型 */ int maxProfit(vector<int>& prices) { // write code here //要想获得最大收益-必须在买入后找到后面一个最大的数 //买.原创 2022-01-15 21:24:17 · 295 阅读 · 0 评论 -
newcoder-连续子数组的最大和
这个题目实话我第一次没有想出来,只能玩尬的过一点用例,因为我还没系统地学习动态规划以及贪心算法。这里的题解主要参考官方的题解-逐级优化:1.第一级:暴力做法-时间复杂度O(n3n^3n3),空间复杂度O(1)枚举左右端点然后计算总和,并实时更新最大的和。class Solution{public: int FindGreatestSumOfSubArray(vector<int> array) { int ans = INT_MIN; int len.原创 2022-01-15 00:42:03 · 278 阅读 · 0 评论 -
nowcoder-合并两个有序的数组
这道题很容易就想到归并排序;但事实上这里并不需要开辟额外的空间,因为A已经给出了m+n长度的空间,所以直接从A的右往左移即可。class Solution {public: void merge(int A[], int m, int B[], int n) { //看题目感觉是让写插入排序-如何利用两个都是有序-从小到大的条件 int i,j,k; //从后面开始往前就可以避免大量移动 i=m-1;j=n-1;k=m+n-1; w.原创 2022-01-13 19:57:28 · 174 阅读 · 0 评论 -
newcoder-跳台阶
无论是多少级台阶,利用逆向思维,要想到达N阶台阶,前一步一定是跨两步或者跨一步,这时候递归方程就写出来了- jumpFloor(number-1)+jumpFloor(number-2);再加入一个结束条件即可: if(number==1){ return 1; } if(number==2){ return 2; }最后的全部源码:class Solution {public: int .原创 2022-01-13 16:44:10 · 214 阅读 · 0 评论 -
newcoder-用两个栈实现队列
这里的编程实现使用的是类C代码-即仅使用C++的STL库这道题的主要思路就是想象如何将两个栈拼接成一个队列(即如何将两个FILO变为FIFO)其实核心就是一个栈用于存储,另外一个栈用于将其转换成队列然后再逐个弹出即可。有一个坑是你必须保证每一次pop必须先确保stack2中所有的元素已经弹出后再执行stack2读取stack1数据的操作,因为只能保证每一次连续的push操作后stack2中元素的队列优先性。class Solution{public: void push(int no.原创 2022-01-12 12:52:42 · 115 阅读 · 0 评论 -
newcoder-判断链表是否有环
Solution1.有环则说明不存在尾节点,不存在尾节点的下一个结点为NULL,一个简单的想法是遍历链表并不断存储已经遍历过的链表-最后每次遍历的时候都去check当前结点的下一个结点是不是已经遍历过的结点,java可以用hash表直接用contains函数,这里我使用的比较笨的办法,时间复杂度O(n2n^2n2),空间复杂度O(n).-容易翻车。/** * Definition for singly-linked list. * struct ListNode { * int val;.原创 2022-01-11 15:17:40 · 309 阅读 · 0 评论 -
newcoder-反转链表
Solution:这个题首先不要一上来就想着使用栈或者递归,而是应该想着如何利用最基本的指针来解决这个问题。此题解题思路为:使用三个指针pre cur nex来实现对于每一个结点的next修改方向,最后遍历即可,时间复杂度为O(n) 。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: .原创 2022-01-10 18:11:26 · 962 阅读 · 0 评论 -
求N个数的最大公约数和最小公倍数(python)
文章目录穷举法辗转相除法核心:先比较两个,再用递归的方法知识: 两个数的乘积等于两个数的最大公约数和最小公倍数的乘积如果两个数中较大的数是较小的数的倍数,那么最大公倍数就是较大的数如果两个数都是质数,那么最大公倍数就是两个数相乘两个数的最大公约数可以使用最简单的穷举法和最快的辗转相除法穷举法def hcf(x, y): """该函数返回两个数的最大公约数""" # 获取最小值 if x > y: smaller = y else:原创 2021-04-22 00:37:04 · 1487 阅读 · 2 评论 -
巧用java工具类解决进制转换
import java.util.*;import java.lang.Math;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); List<String> list=new ArrayList<>(); while ((in.hasNext())) { ..原创 2021-04-18 18:16:14 · 333 阅读 · 1 评论 -
蓝桥杯训练系统 入门4题
1.Fibonacci数列%10007的余数import java.io.IOException;import java.util.*;public class Main { public static void main(String[] args) throws IOException { Scanner in = new Scanner(System.in); while (in.hasNext()) { int n = in.ne原创 2021-02-17 11:56:35 · 252 阅读 · 2 评论 -
杭电OJ 题目(2000-2006)+答案源码记录(可提交成功)
这几天兴趣来了刚好刷一刷杭电oj,顺便分享一下答案,都是些基础题,如果有问题欢迎随时指出,会保持更新.1000:太简单1001:import java.util.Scanner;public class Main { public static void main(String[] args) { int n = 0; int sum = 0; Scanner sc = new Scanner(System.in); whil原创 2020-11-07 20:00:27 · 1267 阅读 · 0 评论