num

面试题29:顺时针打印矩阵

本秂侑毒 提交于 2020-03-26 08:44:18
/** * @Author: Allen * @Version:v1.00 * @CreateData:2018年4月2日 上午9:31:45 *输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, *例如,如果输入如下矩阵: *1 2 3 4 *5 6 7 8 *9 10 11 12 *13 14 15 16 * 则依次打印出数字 * 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. */import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { if(matrix==null){ return null; } ArrayList<Integer> list=new ArrayList<Integer>(); int rows = matrix.length; int colums = matrix[0].length; int start=0; while(colums>start*2 && rows > start*2){ list.addAll(printMatrixInCircle(matrix,rows,colums,start)); start++; } return

PHP之类的属性方法重写

ε祈祈猫儿з 提交于 2020-03-26 07:02:34
1 <?php 2 header("Content-Type:text/html;charset=utf-8"); 3 /*重写: 4 子类继承父类,只是会重写父类的属性和方法。 5 子类继承父类不会删除其属性,只是子类向父类向上查找的一个过程。 6 7 为什么重写? 8 子类对父类的方法不满意,功能不强大,然后子类重写父类。 9 10 封装性:就是指隐藏内部实现,对外部提供一个借口。从代码质量 和软件工程上考虑考虑代码的严谨性 11 保护数据安全,内部机制 12 13 14 */ 15 16 class goods{ 17 public $name; 18 public $num; 19 public $price; 20 21 public function __construct($name, $num, $price){ 22 $this->name=$name; 23 $this->num=$num; 24 $this->price=$price; 25 } 26 } 27 28 29 30 class book extends goods{ 31 public $author; 32 public $publisher; 33 34 public function __construct($name, $num, $price, $author, $publisher)

[NOIP2011 普及组] 瑞士轮

拜拜、爱过 提交于 2020-03-26 06:09:32
题目 在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。后者的特点是较为公平,偶然性较低,但比赛过程往往十分冗长。 本题中介绍的瑞士轮赛制,因最早使用于 1 8 9 5年在瑞士举办的国际象棋比赛而得名。它可以看作是淘汰赛与循环赛的折中,既保证了比赛的稳定性,又能使赛程不至于过长。 2 × N 名编号为 1 ∼ 2 N 的选手共进行R 轮比赛。每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。总分相同的,约定编号较小的选手排名靠前。 每轮比赛的对阵安排与该轮比赛开始前的排名有关:第 1 名和第 2 名、第 3 名和第 4名、……、第 2 K − 1名和第 2 K名、…… 、第 2 N − 1名和第 2 N名,各进行一场比赛。每场比赛胜者得 1分,负者得 0分。也就是说除了首轮以外,其它轮比赛的安排均不能事先确定,而是要取决于选手在之前比赛中的表现。 现给定每个选手的初始分数及其实力值,试计算在R 轮比赛过后,排名第 Q 的选手编号是多少。我们假设选手的实力值两两不同,且每场比赛中实力值较高的总能获胜。 输入格式 第一行是三个正整数 N , R , Q,每两个数之间用一个空格隔开,表示有 2 × N名选手、

Java8特性详解 lambda表达式 Stream

独自空忆成欢 提交于 2020-03-26 05:16:14
1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正在将自己变的更高(Sha)级(Gua),更人性化。--------可以这么说lambda表达式其实就是实现SAM接口的语法糖。 lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。 先列举两个常见的简化(简单的代码同样好理解) 创建线程 排序 lambda表达式配合Java8新特性Stream API可以将业务功能通过函数式编程简洁的实现。(为后面的例子做铺垫) 例如: 这段代码就是对一个字符串的列表,把其中包含的每个字符串都转换成全小写的字符串。注意代码第四行的map方法调用,这里map方法就是接受了一个lambda表达式。 1.1lambda表达式语法 1.1.1lambda表达式的一般语法 (Type1 param1, Type2 param2, ..., TypeN paramN) -> { statment1; statment2; //............. return statmentM; } 这是lambda表达式的完全式语法,后面几种语法是对它的简化。 1.1.2单参数语法 param1 -> { statment1;

Java8特性详解 lambda表达式 Stream

喜夏-厌秋 提交于 2020-03-26 05:15:00
1.lambda表达式 Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正在将自己变的更高(Sha)级(Gua),更人性化。--------可以这么说lambda表达式其实就是实现SAM接口的语法糖。 lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。 先列举两个常见的简化(简单的代码同样好理解) 创建线程 排序 lambda表达式配合Java8新特性Stream API可以将业务功能通过函数式编程简洁的实现。(为后面的例子做铺垫) 例如: 这段代码就是对一个字符串的列表,把其中包含的每个字符串都转换成全小写的字符串。注意代码第四行的map方法调用,这里map方法就是接受了一个lambda表达式。 1.1lambda表达式语法 1.1.1lambda表达式的一般语法 (Type1 param1, Type2 param2, ..., TypeN paramN) -> { statment1; statment2; //............. return statmentM; } 这是lambda表达式的完全式语法,后面几种语法是对它的简化。 1.1.2单参数语法 param1 -> { statment1;

代码题(32)— 排序算法总结

Deadly 提交于 2020-03-26 04:41:17
0、几种排序对比   1. 从平均时间来看,快速排序是效率最高的,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。而后者相比较的结果是,在n较大时归并排序使用时间较少,但使用辅助空间较多。   2. 上面说的简单排序包括除希尔排序之外的所有冒泡排序、插入排序、简单选择排序。其中 直接插入排序最简单,但序列基本有序或者n较小时,直接插入排序是好的方法 ,因此常将它和其他的排序方法,如快速排序、归并排序等结合在一起使用。 一、交换排序 1、冒泡排序   思想 :对待排序元素的关键字从后往前进行多遍扫描,遇到相邻两个关键字次序与排序规则不符时,就将这两个元素进行交换。这样关键字较小的那个元素就像一个泡泡一样,从最后面冒到最前面来。   时间复杂度 :最坏:O(n2); 最好: O(n); 平均: O(n2)   空间复杂度 :O(1)   稳定性 : 稳定 ,相邻的关键字两两比较,如果相等则不交换。所以排序前后的相等数字相对位置不变。 void BubbleSort(vector<int> &a, int num) { bool flag = true; for (int i = 0; i < num ; ++i) { if (!flag)//判断上一次循环有没有交换 break; flag = false; for (int j = num - 1; j > i; --j) {

Enemy is weak 树状数组

谁说我不能喝 提交于 2020-03-26 04:13:07
来源: http://codeforces.com/problemset/problem/61/E 题意:给你一些数,让求满足i < j < k 且num[i] > num[j] > num[k]的序列的个数,而且已知每个数都是不同的。 思路:这是CF上的一道题,由题意很容易联想到逆序数。实际上就是这样,这道题就是和逆序数有关。假如所给的序列为10 8 3 1,那么我们求出每个数的后面比其小的有多少个,对于该序列来说的话为3,2,1,0。然后我们再求出每个数前面有几个比其大的,对于 该序列来说是0,1,2,3。现在我们把对应的比其小的数的个数和比其大的数的个数相乘再相加就是所求的答案。 现在问题来了,用什么求逆序数。由于最多有100万个数,因此普通的方法求逆序数肯定超时。对于很多数求逆序数,一般有两种方法,归并排序或者是用树状数组求。我是用树状数组求得逆序数。先来说一下什么是树状数组。 树状数组,顾名思义,就是一个数组,但是该数组和普通数组的区别在于,此数组是树状的。树状的含义就是含有节点,该结点所含有的信息和普通数组不同。我们先来考虑普通数组,num[1],num[2],num[3],,,普通数组里的每个元素所含的值就是其本身,而树状数组则不同。num1[1]所包含的元素是其自身,num1[2]所包含的元素是普通num[1]+num[2]的和,num1[3]所包含的元素是num

form总结

这一生的挚爱 提交于 2020-03-26 04:04:00
在Javascript 中,页面上的每一对<form> 标记都解析为一个对象,即form 对象。 可以通过document.forms 获取以源顺序排列的文档中所有form 对象的集合。 如果一个表单对象定义如下: <form name="frm1" method="post" action="login.aspx"> 获得该表单对象的方法: i> document.forms["frm1"]; // 根据name属性值 ii> document.forms[0]; // 根据索引号 iii> document.frm1; // 直接根据name值获得对象 form 表单应该注意的属性: elements: 获取以源顺序排列的给定表单中所有控件的集合。 但是<input type="image" > 对象不在此集合内。 var txtName = myform.elements[ 0 ]; //获得表单的第一个元素 var txtName = myform.elements["txtName"]; //获得name属性值为"txtName"的元素 var txtName = myform.elements.txtName; //获得name属性值为"txtName"的元素 enctype: 设置或获取表单的多用途网际邮件扩展(MIME) 编码。 这个属性的默认值为

常用排序算法的Python实现

社会主义新天地 提交于 2020-03-26 01:25:03
最近一段时间学习了python,发现python真是个强大,强大到和Matlab相媲美。为了熟悉python,将之前的各种排序算法用python实现了一下。 常用的时间复杂度为O(n^2)的排序算法有冒泡排序,插入排序和选择排序,时间复杂度为O(nlog2(n))的算法有快速排序,归并排序和堆排序, 这里的快速排序的初始比较值partition是随机给定的,在用python进行编写时能更清楚的理解整个排序算法的过程。 1 import random 2 def BubbleSort(num): 3 n=len(num) 4 for i in range(0,n): 5 for j in range(i,n): 6 if num[i]>=num[j]: 7 num[i],num[j]=num[j],num[i] 8 return num 9 def SelectSort(num): 10 for i in range(0,len(num)): 11 mindex=i 12 for j in range(i,len(num)): 13 if num[mindex]>num[j]: 14 mindex=j 15 num[mindex],num[i]=num[i],num[mindex] 16 return num 17 def InsertSort(num): 18 for i in

洛谷 P1886 滑动窗口(单调队列)

旧街凉风 提交于 2020-03-25 21:52:50
题目链接 https://www.luogu.org/problemnew/show/P1886 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 例如: The array is [1 3 -1 -3 5 3 6 7], and k = 3. 输入输出格式 输入格式: 输入一共有两行,第一行为n,k。 第二行为n个数(<INT_MAX). 输出格式: 输出共两行,第一行为每次窗口滑动的最小值 第二行为每次窗口滑动的最大值 输入输出样例 输入样例#1: 8 3 1 3 -1 -3 5 3 6 7 输出样例#1: -1 -3 -3 -3 3 3 3 3 5 5 6 7 说明 50%的数据,n<=10^5 100%的数据,n<=10^6 解题思路 先理解文意:对于给定一个长度为n的序列,找出所有长为k的区间的最大值(最小值)。 首先很多人会想到,枚举每一个长为k的区间,然后遍历一遍,找到最大值(最小值),这样的时间复杂度是o(nk)的, 显然超时 。 所以我们需要换一种思路。 单调队列 :单调队列就是一个一直保持单调性(递增或递减)的长度最大为k的双端队列。 我们维护这样一个单调队列,使它队首元素即为要求的最大值(最小值)。 所以本题的核心是:怎样维护一个单调队列。