循环语句续 要求输出一个*号组成的三角形。 代码如下: package com.cxf.Switch; public class Demo2 { public static void main(String[] args) { for (int i = 0; i < 5; i++) { for (int i1 = 0; i1 < 4 - i; i1++) { System.out.prin
尺取:在当前满足条件的情况下,移动左指针,再次判断是否满足条件即可。然后取整体答案的最小值。 满足条件的 check:记录每个字母用的次数,然后依次比较。 class Solution { public: string minWindow(const string &s, const string &t) { memset(lower, 0, sizeof
矩阵置零 题目描述:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 进阶: 一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案
A. Dislike of Threes 题意:给出一组从1开始的数,要求不包括3的倍数或个位是3的数,给出n,输出第n个数 数据范围n <= 1000 分析:暴力 代码: #include <cstring> #include <iostream> #include <algorithm> #include <map> #include <vector> #define x first #define y second using n
插入排序 #include<iostream> #include<vector> using namespace std; void insertSort(vector<int> &arr) { //插入sort int key = 0; int j = 0; for(int i = 1; i < arr.size(); i++) { key = arr.at(i); j = i - 1; while (j >=0 &
短路逻辑运算符有两种 一、&&:短路与 与逻辑运算符&与判定相同,即有假即假,唯一区别是:在短路与&&所连接的关系表达式中,如果左边为假,则右边不进行运算,直接输出结果。 例: int i = 10; int j = 20; System.out.println((i++>100) & (j++>100));//false & false System
问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。 输入格式 输入的第一行包含一个整数n,表示给定整数的个数。 第二行包含所给定的n个整数。 输出格式 输出一个整数,表示值正好相差1的数对的个数。 样例输入 6 10 2 6 3 7 8 样例输出 3 样例
前言 入门模拟中的题比较简单, 基本上没用到什么算法. 个人觉得比较难的有 : 图形输出 (需要找出列与行之间的关系与规律) 日期处理 (要解决平闰年的问题, 还有每个月的天数, 例如 2 月平年 28 天, 闰年 29 天等) 进制转换 (涉及到大数转换时需要使用大数除法算法) 除此之
15 年的 NOIP 提高组试题,被搬到今天校模拟赛,只糊了 20 分,结果人均 50 分贪心…… 这张图片可以作为题目描述: 并不是跟别人斗地主,而是要求尽快出完牌,输出步数。 \(n \le 20\),多组数据。 对于 \(n \le 5\) 的那些测试点,当然可以手工模拟。更进一步,根据打牌的经验(显然我就没有),不难产
前置知识: 原码表示法是整数的一种简单的表示法,符号位用0表示正号,用1表示负号,数值一般用二进制形式表示。整数的反码可由原码得到,如果是正数,则反码与原码一样;如果是负数,则反码是对它的原码(符号位除外)各位取反而得到的。整数的补码可由原码得到。如果是正数,则补码与原码一样;如果是
public class Yanghui { public static void main(String[] args) { int[][] arr = new int[10][]; for (int i = 0; i < 10; i++) { arr[i] = new int[i + 1]; } //创建不规则二维数组 也可用规则的二维数组 for (in
给定一个 R 行 C 列的地图,地图的每一个方格可能是 #, +, -, |, ., S, T 七个字符中的一个,分别表示如下意思: #: 任何时候玩家都不能移动到此方格; +: 当玩家到达这一方格后,下一步可以向上下左右四个方向相邻的任意一个非 # 方格移动一格; -: 当玩家到达这一方格后,下一步可以向左右两
牛客多校第九场 E Eyjafjalla(树上倍增+主席树) 题目链接:E Eyjafjalla 题目大意: 给你一颗树,每个节点代表一个城市并且有各自的温度,其中节点 \(1\) 作为城市首都,温度最高,特别的是,每个子节点的温度小于父节点的温度,即温度从节点 \(1\) 向下递减。 我们有 \(q\) 组询问,魅族询问给出 \(x
i++与++i怎么运算,解决办法: i++规则是在表达式中先取i的值使用,后让i的值变化成加1后的值。 举例:如在式中 j=i++,他就会变成这样的两步,第一步先执行j=i,第二步执行i=i+1。 ++i规则是在表达式中先让i的值变化成加1后的值,后取i的值使用。 举例:如在式
public class Test01{ public static void main(String[] args){ int a = 1; int b = a++;//++在后,则先把a的值赋给b,然后a再自加1,这段代码执行后,b=1,a=2 int c = ++a;//++在前,先a自加1,然后赋值给c,这段代码执行后,a= 3,c=3 int x = 1; int y = 2; int t; //实现x与y的值互换 t = y;
复合的赋值运算符 a=a+1可简写a+=1 a=a*3可简写a*=3 自增自减运算符 i=i+1可写成i++或++i,减法也一样 两种写法有区别 #include<stdio.h> int main() { int i=5,j; j=++i; printf("i=%d,j=%d\n",i,j); i=5; j=i++; printf("i=%d,j=%d\n",i,j); retur
find index without indexOf() //foor loop in the collection for (int i = 0; i < s.length(); i++) { for (int j = i + 1; j < s.length() - i; j++) { //get substring from (i,j) String s = s.substring(i,j); if (s.equals(target)){ rer
原题链接 Description 给定两个整数 n 和 k,请你构造一个长度为 n 的字符串 s。 字符串 s 需满足: s 由前 k 个小写字母构成,且前 k 个小写字母均在 s 中出现至少一次。 前 k 个小写字母中,出现次数最少的字母的出现的次数尽可能多。 输出任意满足条件的字符串 s。 Input 第一行包含
冒泡、(插入、希尔)、(选择、堆排)、快速、归并、桶排、基数、计数排序sort.h文件 #ifndef UNTITLED1_SORT_H #define UNTITLED1_SORT_H #include <iostream> #include <vector> #include <queue> using namespace std; struct show_each{ void operator()(int x){cout<<x<<
题目链接: https://leetcode-cn.com/problems/student-attendance-record-i/ 今天的题很简单,应该没有人不会做,贴一下自己的代码 class Solution { public: bool checkRecord(string s) { int A = 0, L = 0, len = s.length(); for(int i = 0; i < len; i++)
Day2 1.++i i++的区别: i++和++i的i的值都加了1; 但i++整体没变化,而++i整体加了1; 2.&&和&的区别: &&具有短路功能,即前面表达式为0,则跳过后方表达式直接输出false, 而&无短路功能,即无论结果如何,前后表达式都不会不执行 3.if语句 if(判断条件){•
考场上读错题,直接炸裂。 题目中说“任一”的意思是优弧与劣弧中随便一个满足条件即可,不是要求都满足要求。 很明显可以用单调栈。 常规做法是将环拆开,变成\(2n\)的链,然后直接跑单调栈,会\(T\)。 题解的做法是将某个最大值放在端点,因为很明显如果你的某个弧上有
简介 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某
class Solution { public: int longestOnes(vector<int>& nums, int k) { unordered_map<int,int> un_map; int sum = 0; int i = 0; int j = 0; for(j = 0; j < nums.size(); j++){ sum =
基本运算符 JAVA语言支持以下运算符: //1.算术运算符:+,—,*,/,%(模(11/5=2...1)),++,-- //2.赋值运算 = (int a = 10;把十赋值给a) //3.关系运算符:>,<,>=,<=,==(java等于是两个等 、号),!==instaceof(java里面的不等于) //4.逻辑运算符:&&(and与,我和你),||(or或,我或你),!(non非,不是你就