num

Leetcode之Majortity Element II

◇◆丶佛笑我妖孽 提交于 2020-01-27 00:08:20
题目: Given an integer array of size n , find all elements that appear more than ⌊ n/3 ⌋ times. Note: The algorithm should run in linear time and in O(1) space. Example 1: Input: [3,2,3] Output: [3] Example 2: Input: [1,1,1,3,3,2,2,2] Output: [1,2] 代码: class Solution { public: vector<int> majorityElement(vector<int>& nums) { vector<int> res; int a = 0, b = 0, cnt1 = 0, cnt2 = 0, n = nums.size(); for (int num : nums) { if (num == a) ++cnt1; else if (num == b) ++cnt2; else if (cnt1 == 0) { a = num; cnt1 = 1; } else if (cnt2 == 0) { b = num; cnt2 = 1; } else { --cnt1; --cnt2; } } cnt1 = cnt2 = 0;

2020/1/26单源最短路Dijkstra算法

会有一股神秘感。 提交于 2020-01-27 00:04:44
今日大年初二,期望武汉疫情早日控制!! 单源最短路 以PTA 7-35 城市间紧急救援 (25分)为例 题目 该题目要求给出从相应起点出发所得到的最短路,于是考虑单源最短路的Dijkstra算法。 Dijkstra算法 算法可以得到由指定起点出发到达其他结点的最短路径长度。 实现步骤: 初始化距离数组为INF 扫描邻接矩阵,加入起点,更新距离数组 外层有N-1层循环,每层循环找到距离最小且未被访问的结点,加入该结点,更新距离数组。 全部执行完之后,将可以得到一个长度为结点数目的数组,该数组存储了由结点到达其它结点的最短距离。另外,该题目还需要输出最短路径的条数以及路径,所以在更新距离数组时,需要将距离相同的路径条数以及经过的路径进行记录。 AC代码如下: # include <bits/stdc++.h> # include <cstdio> # include <cstdlib> # include <iostream> # include <algorithm> # include <string.h> # define ll long long # define INF 10000 # include <map> # include <stack> # include <queue> # include <stdio.h> # include <string.h> using

201803-2 碰撞的小球

烂漫一生 提交于 2020-01-27 00:02:20
问题描述   数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。   当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。   当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。   现在,告诉你线段的长度L,小球数量n,以及n个小球的初始位置,请你计算t秒之后,各个小球的位置。 提示   因为所有小球的初始位置都为偶数,而且线段的长度为偶数,可以证明,不会有三个小球同时相撞,小球到达线段端点以及小球之间的碰撞时刻均为整数。   同时也可以证明两个小球发生碰撞的位置一定是整数(但不一定是偶数)。 输入格式   输入的第一行包含三个整数n, L, t,用空格分隔,分别表示小球的个数、线段长度和你需要计算t秒之后小球的位置。   第二行包含n个整数a1, a2, …, an,用空格分隔,表示初始时刻n个小球的位置。 输出格式   输出一行包含n个整数,用空格分隔,第i个整数代表初始时刻位于ai的小球,在t秒之后的位置。 样例输入 3 10 5 4 6 8 样例输出 7 9 9 样例说明    样例输入 10 22 30 14 12 16 6 10 2 8 20 18 4

python模块二(递归,反射,正则表达式)

故事扮演 提交于 2020-01-26 23:18:07
一、递归,阶乘 递归之实例: def func(num): """ 1*2*3*4*5... 计算类型形式的阶乘 :param num: 计算阶乘的最大值 :return: 7 * (7 - 1) """ # 如果参数为1,直接返回1 if num == 1: return 1 # 否则返回2 * (2 - 1) return num * func(num - 1) x = func(5) print(x) # ########print########### 120 print(1 * 2 * 3 * 4 * 5) # ########print########### 120 二、反射 反射关键:      反射: 基于字符串的形式去对象(模块)中操作其成员          基于内存操作的     delattr    删除成员     setattr    设置成员     getattr    获取成员     hasattr    检查成员   学习反射之前先了解一下下面的知识 # 定义一个函数名为f1 def f1(): print('F1') # 字符串f1 "f1" # 那么函数名的f1与字符串的f1是否一样 答案是不一样 f1 是 函数名,代表整个函数体 "f1"是 字符串,仅代表字符串本身 现在以一个实例来学习反射 #!/bin/bin/env python #

棒球比赛

╄→尐↘猪︶ㄣ 提交于 2020-01-26 22:46:18
export default (arr) => { let result = [] // 上一轮数据 let pre1 // 上上一轮数据 let pre2 // 对数组进行遍历处理得分 arr.forEach(item => { switch (item) { case 'C': if (result.length) { result.pop() } break case 'D': pre1 = result.pop() result.push(pre1, pre1 * 2) break case '+': pre1 = result.pop() pre2 = result.pop() result.push(pre2, pre1, pre2 + pre1) break default: result.push(item * 1) } }) return result.reduce((total, num) => { return total + num }) } 来源: https://www.cnblogs.com/ygjzs/p/12234935.html

codeforce F - Three Paths on a Tree

岁酱吖の 提交于 2020-01-26 22:18:02
F. Three Paths on a Tree time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an unweighted tree with n n vertices. Recall that a tree is a connected undirected graph without cycles. Your task is to choose three distinct vertices a , b , c a,b,c on this tree such that the number of edges which belong to at least one of the simple paths between a a and b b, b b and c c, or a a and c c is the maximum possible. See the notes section for a better understanding. The simple path is the path that visits each vertex at most once.

背包九讲

穿精又带淫゛_ 提交于 2020-01-26 21:08:30
本篇文章设计的题目均在 AcWing 的2-12题。 一、01背包 要求 :每种物品只能选择0个或1个,即对于每种物品只有选或者不选两种情况。 题目描述 :( 题目链接 ) \quad 有 N N N 件物品和一个容量是 V V V 的背包。每件物品只能使用一次。第 i i i 件物品的体积是 v i v_i v i ​ ,价值是 w i w_i w i ​ 。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 输入格式 : \quad 第一行两个整数, N , V N,V N , V ,用空格隔开,分别表示物品数量和背包容积。接下来有 N N N 行,每行两个整数 v i , w i v_i,w_i v i ​ , w i ​ ,用空格隔开,分别表示第 i i i 件物品的体积和价值。 输出格式 : \quad 输出一个整数,表示最大价值。 数据范围 : 0 < N , V ≤ 1000 0<N,V≤1000 0 < N , V ≤ 1 0 0 0 0 < v i , w i ≤ 1000 0<v_i,w_i≤1000 0 < v i ​ , w i ​ ≤ 1 0 0 0 输入样例 : 4 5 1 2 2 4 3 4 4 5 输出样例 : 8 思路1:二维数组记录 \quad f[i][j] 表示只看前 i 物品,总体积是 j

1.位运算 题六--用二进制表示十进制小数

余生长醉 提交于 2020-01-26 20:02:50
题目:将十进制小数用二进制表示,如果不能用32位小数表示,则输出“ERROR” 思路:1.将小数乘以2,若结果大于1,则将二进制小数位上表示1,并将结果减1 2.若结果小于1,则继续乘以2,循环1,2两步,直至结果等于0 3.若小数的位数超过34位,则输出“ERROR”,结束循环。 public class erjinzhixiaoshu { public static void main(String args[]) { double num=0.625; StringBuilder sb=new StringBuilder ("0."); while(num>0) { num=num*2;//乘以2,挪整 if(num>=1) { sb.append("1");//乘以2后大于1,则在后面添1, num=num-1;//消掉整数部分 } else{ sb.append("0");//添加0 num=num; } if(sb.length()>34)//若无法用法32位小数表示(加上0.两位,共34位) { System.out.print("ERROR");return ; } } System.out.print(sb.toString()); } } 2.数组实现(思路和上面一样,主要是复习了一下数组) public class erjinzhixiaoshu {

编程题

三世轮回 提交于 2020-01-26 19:13:38
题目: 中国文化博大精深,从仓颉造字开始,汉字一直流传到了今天。我们在感叹汉字的源远流长时,也不禁感慨,为什么没有一门使用汉字编程的语言? 汉字真的不能编程吗?最近文言文编程火了一把,吾有一數。曰三。名之曰「甲」。这朴实无华的变量定义无疑不是几千年来中华文化的发展中一朵奇葩。 今天小王同学想,文言文能编程那白话文呢?他找到了你,让你帮帮他。 编程要求 编写一个程序,输入满足以下语法要求的一段文字,输出运行后的结果。 变量定义:整数 钱包 等于 零 运算(加法):钱包 增加 四 运算(减法):钱包 减少 四 输出:看看 钱包 样例 输入: 整数 钱包 等于 零 钱包 增加 四 钱包 减少 三 看看 钱包 输出: 一 注意: 1.输入输出用例均为GBK编码,推荐使用vscode把文本切换为GBK编码。 2.数字只会出现以下 零一二三四五六七八九十 。 正文 可以把钱包看成数值变量qian,它的值为汉字数字转化成的阿拉伯数字。那么我将用strcmp函数实现汉字数字变阿拉伯数字。 由于整数的范围在0-99,为了更好实现代码,规定输入的汉字最多为两个 例如:不可以输入三十三,而应该输出三三(即把中间的十省略)。 其他数字照常输入,例如:三,十三。 代码由三部分组成: 一、主函数 int main() { int point(char num[]); void change(int a);

面向对象程序设计寒假作业1

不打扰是莪最后的温柔 提交于 2020-01-26 19:10:51
这个作业属于哪个课程 2020年面向对象程序设计 这个作业要求在哪里 面向对象程序设计寒假作业1 这个作业的目标 1.安装C++开发环境(见附录)2.完成问答题、实践题及编程题3.发布博客 作业正文 如下 其他参考文献 C语言的不足之处 C语言的编译过程 一.问答题:(基础3分) 回答以下问题: 1.1如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。 1.2如果你已经了解C++请回答以下问题:你觉得C++和C语言比有什么优点。 2.查阅相关资料,简述一下C语言/C++的编译过程。 1.1:C语言语法限制不太严格,程序设计自由度大。例如, C语言对数组下标越界不检查,容易造成数据在内存中的混乱。 C语言中许多运算符具有不同的意义,甚至有些关键字也具有好几种意义。例如, void作为函数的返回类型,表示不返回任何值;在指针声明中,表示通用指针类型;在参数列表中,表示没有参数。 c语言不太严谨,例如,整型和浮点型变量运算时不会报错。 2:编译分为四个过程,分别是预处理,编译,汇编,链接。 预处理用于将所有#include头文件以及宏定义替换成其真正内容,预处理后会得到比原来体积大得多的文本文件。 编译将经过预处理之后的程序转换成特定汇编代码的过程,生成的也是文本文件。 汇编将上一步的汇编代码转换成机器码,为每一个源文件产生一个目标文件,是二进制格式。