随笔
poinner…
只要剪汁儿剪的好
展开
-
js遍历map
记录一下,可以直接跳过,看下面的错误和正确示范今天在写项目的时候,程序中的一个操作是需要在更新画布的同时将对应的json也进行同步更新,而更新这个json时需要将一个map对象转为json格式,然后赋值给json 的一个属性[暂时叫这个属性为 jMap]. 但每次更新json后,json的jMap属性都为空,因为这个操作的代码逻辑相对比较复杂,而且一开始也没想到会是这里出问题,所以这个问题找了找了将近两个小时才发现问题的根源,就是出在将map对象转为json格式上,先看一下我之前的错误示范:错误的遍历方原创 2022-02-16 00:10:14 · 2133 阅读 · 0 评论 -
c++ txt读取
#include<iostream>#include<string>#include<fstream>using namespace std;int main(){ ifstream file; file.open("C://Users//86178//Desktop//aaa.txt"); if (!file.is_open()) cout << "open file failure" << endl;原创 2021-04-17 17:40:12 · 86 阅读 · 0 评论 -
最小生成树--Kruskal算法
最小生成树有两种解法一种是prim,也就是贪心,从第一个点A开始,找与之相连的边权最小的点B,然后再从B开始,找与B相连的边权最小的点…以此类推,时间复杂度n2所以prim适合求边和点比较少的图第二种就是Kruskal了,这个方法主要用到了并查集的思想,把每个点看成一个集合,先对所有的边按权重排个序,然后依次枚举每条边上的两个点是否属于同一个集合,如果不属于就合并两个集合,例题代码如下:#include<iostream>#include<algorithm>#inc原创 2021-04-15 10:06:52 · 231 阅读 · 0 评论 -
关于is_sorted与next_permutation的使用
is_sortedis_sorted()是algorithm库的一个函数,可以用来判断一段序列是否已经排好序,默认是排序是按照升序,即如果被判断的序列(可以是数组或vector)是升序的话返回true,如果想判断是否按降序排列,可以在在该方法的最后添加一个cmp函数。next_permutaion如果想要遍历所有的方案,需要参数数组或向量已经排好序,如果目标不是有序的,需要先sort一遍。...原创 2021-04-11 19:41:23 · 155 阅读 · 0 评论 -
第几个幸运数(优先队列+mp)
题目到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。前10个幸运数字是:3 5 7 9 15 21 25 27 35 45,因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505。去领奖的时候,人家要求他准确说出这是第几个幸运数字,否则领不到奖品。请你帮小明计算一下,59084709587505是第几个幸运数字。解法一:暴力枚举#include<b原创 2021-04-10 11:26:47 · 224 阅读 · 0 评论 -
十进制数转罗马数字
#include<iostream>#include<string>using namespace std;int main(){ int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; string reps[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};原创 2021-04-05 11:29:29 · 140 阅读 · 0 评论 -
算法笔记第一天-bfs
第一天第一题:递归实现组合型枚举#include<iostream>using namespace std;const int N=30;int n,m;int a[N];bool mark[N];void dfs(int x){ if(x==m){//结束条件 for(int i=0;i<m;i++)cout<<a[i]<<" "; cout<<endl; return;原创 2021-04-01 22:32:04 · 85 阅读 · 0 评论 -
树状数组的应用(小朋友排队)
题目这题乍一看感觉就是一个逆序对的问题,和树状数组好像没有什么关系,毕竟树状数组的优势就只有动态的单点修改和区间查询,但是仔细推理还是可以发现关系的(反正我是发现不了。。。),因为这个题是求逆序对,我们其实只需要找到每个小朋友在他前面比他高的和在他后面比他矮的再计算即可。所以需要两步操作:(1)枚举每个小朋友(2)分别找出在他前面比他高的和在他后面比他矮的小朋友。之后就是数学公式了。第一步没什么好想的,主要是第二步,如何找出在他前面比他高的呢,这就可以用到树状数组了,(这里想了好久,我真笨)我们原创 2021-03-17 00:19:27 · 107 阅读 · 0 评论 -
火车进站
题目链接火车进站这道题乍一看很可能会看成求数字的全排列,我就是犯了这个错误。其实这题求得是符合一定条件的全排列,也就是说题目要求的输出序列只是全排列的一部分。那输出的序列需要满足哪些要求呢(=?=)其实我们可以通过模拟得出结果,通过模拟火车进站、出站可以将整个过程分为三个状态,在这里记为A,B,C,A代表已经出站的火车(也就是已经排好序的序列),B代表此时正在站中的火车,C代表还未进站的火车。可以发现,C中的数字一定是大于A或B中的数字的,假设我们已经放了k个数字,那么我们接下来只可以进行两种操作原创 2021-03-03 15:50:06 · 680 阅读 · 1 评论 -
FileReader的使用
共三种方法第一种:static FileReader fr; static FileWriter fw; public static void main(String[] args) { try { fr = new FileReader("C:\\Users\\86178\\Desktop\\SumField\\Java\\java整理\\java.txt"); fw = new FileWriter("C:\\Users\\86178\\Desktop\\SumField\\J原创 2020-12-15 16:38:48 · 336 阅读 · 0 评论 -
同时使用FileInputStream与FileOutputStream时需要注意的问题
当我们使用FileInputStream从文件一中读出数据并用FileOutputStream写入文件二时需要注意,(通过byte数组b)我们在进行写入操作时应该这样:byte[] b = new byte[512]; int len; FileOutputStream fout = new FileOutputStream("C:\\Users\\86178\\Documents\\360js Files\\temp1.txt"); while ((len = fin.read(b))原创 2020-11-12 17:26:58 · 652 阅读 · 0 评论 -
记录java程序运行的时间
long t1 = System.currentTimeMillis();————————————需检测时间的程序代码————————————long t2 = System.currentTimeMillis();t2-t1即为执行完程序所需时间原创 2020-11-11 17:27:15 · 108 阅读 · 0 评论 -
滑动窗口问题
我借鉴大佬的代码如下:public static int lengthOfLongestSubstring(String s) { char[] c = s.toCharArray(); if (c.length == 0) return 0; int l = 0, r = 0, m = 0; for (; r < c.length; r++) { for (int k = l; k < r; k++) { if (c[k] == c[r]) { .原创 2020-10-22 15:24:15 · 206 阅读 · 0 评论 -
代码
做题时看到一个很厉害的代码题目如图:代码如下: public int reverse(int x) { long sum=0; while(x!=0){ sum=(sum*10+x%10); x/=10; } return (int)sum==sum?(int)sum:0; }通过(x!=0)解决了x的正负问题,返回是通过(int)sum==sum来判断反转后的整数是否溢原创 2020-10-21 23:40:41 · 182 阅读 · 0 评论 -
1145:有问题的里程表
这道题做了两次了,但看到后还是不清楚快速的解决方法,所以记下来因为题目要求遇到4就跳过,和一个名叫“逢三”的文字游戏类似,所以我们可以将这个有问题的十进制数字看作九进制int x = new Scanner(System.in).nextInt(); int m = 0, i = 9, sum = 0; while (x > 0) { m = x % 10; if (m > 4) { sum += (m - 1) * Math.pow(9, 9 - i);原创 2020-10-18 16:27:30 · 328 阅读 · 0 评论 -
java中next()与nextLine()区别
Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别:next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到遇到空格/Tab键/回车截止吸取; 而nextLine()吸取字符前后的空格/Tab键,回车键截止。 这是看到博客园上的博客写的,因为不用博客园,为了方便看,记到我的博客上...原创 2020-10-18 14:56:26 · 112 阅读 · 0 评论 -
Scanner实例化在循环内和循环外有什么区别?
今天在做一道题时遇到了问题,题目如下:输入n和n个整数,以与输入顺序相反的顺序输出这n个整数。要求不使用数组,而使用递归函数实现。递归函数实现过程如下:void inverse(int n){if(n >1){(1) 读入一个整数,存入num;(2) 将后面的n-1个数逆序输出: inverse(n-1);(3) 输出num;}if( n == 1) 直接输出num;}题很容易,我开始写的代码如下:import java.util.Scanner;public c原创 2020-10-17 20:16:20 · 541 阅读 · 0 评论 -
求水仙花数(通过将数字反转比较)
题目如下:一个正整数,如果从左向 右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。输入两个整数m和n(m<n),输出区间[m,n]之间的回文数。关键代码如下:变量m,n是从键盘输入的两个数int sum; for (int i = m; i < n; i++) { sum = 0; int x = i; while (x != 0) { sum = sum * 10 + x % 10; x /= 10; } if原创 2020-10-17 17:10:53 · 116 阅读 · 0 评论 -
Java中按位取整只对int类型的数值有效
Java中按位取整只对int类型的数值有效原创 2020-10-17 16:17:55 · 299 阅读 · 0 评论 -
大数相乘整理
1,模拟小学乘法package Max.cheng;import java.util.Scanner;public class test { public int[] d(int[] a, int[] b) { int[] result = new int[a.length + b.length]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < b.length; j++) { result[i原创 2020-10-15 22:21:13 · 82 阅读 · 0 评论 -
int类型转换为String类型的方法
1.String s=n+"";2.String s=String.valueOf(n);3.String s = Integer.toString(n);原创 2020-10-15 18:21:16 · 1188 阅读 · 0 评论 -
用nextInt来接收double类型的变量会发生异常
用nextInt来接收double类型的变量会发生异常原创 2020-10-15 16:57:55 · 361 阅读 · 0 评论 -
使用if语句是要格外注意条件
记录一下我刚犯的错误,题目要求当a和b都不等于零是结束循环我写的为if(a!=0&&b!=0){。。。。}else{break;}发现一直没有ac原来应该写成if(a0&&b0){break;}else{。。。。}当然,if内的条件不一定非要这样写,只是我写的忽略了a=0,b!=0和b=0,a!=0的情况所以以后写代码的时候一定要专心,小心,虽然这只是小的错误,但是却可以浪费我大量的时间来找错,而这个时间可能比我写这个代码的用时还要多,所以这样的错误一定要尽力避免原创 2020-10-15 16:35:43 · 165 阅读 · 0 评论 -
Integer.parseInt()可以进行进制转换
Scanner sc = new Scanner(System.in); String s = sc.next(); System.out.println(Integer.parseInt(s,2));如图,Integer.parseInt(s,2)的作用就是将字符串s看作二进制转换为十进制原创 2020-10-15 16:07:52 · 1507 阅读 · 0 评论