使用>>指令向文件追加内容,原内容将保存。
使用>指令覆盖文件原内容并重新输入内容,若文件不存在则创建文件。
强连通图:在G中,如果对于每一对vi、vj(vi≠vj),从vi到vj和从vj到vi都存在路径。
n个顶点的有向强连通图:至少n条边(形成一个环);至多n(n-1)条边
n个顶点的无向强连通图:至少n-1条边(形成一条直线);至多n(n-1)/2条边
如果已知数字有{1,2,5,10},每个数字可以无限次使用,构造出数字100,编程解决用到的编程思想有(动态规划)
HTTP请求方法有8种:get、post、put、delete、options、trace、connect、head,其中至少应该实现get、head、post方法,其他方法都是可选的。
下列排序算法中,初始数据集合对排序性能无影响的是?
有影响:
冒泡排序:arr[j] < arr[j+1]则不交换。
插入排序:看能滑动到哪个位置,所以初始数组的排列顺序会有影响。
快速排序:数组有序(正序/逆序)时,选最后一个数作为num,时间复杂度会变为O(N^2);如果Num正好在中间则是O(NlogN)。
无影响:
归并排序:递归的过程
选择排序:不管怎样都要遍历整个数组,每次找到1个位置的最小值。
堆排序:先将数组组织成大根堆,然后每次将堆顶与数组最后一个元素交换
一、delete
1、delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。
2、delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。
3、delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。
二、truncate
1、truncate是DDL,会隐式提交,所以,不能回滚,不会触发触发器。
2、truncate会删除表中所有记录,并且将重新设置高水线和所有的索引,缺省情况下将空间释放到minextents个extent,除非使用reuse storage,。不会记录日志,所以执行速度很快,但不能通过rollback撤消操作(如果一不小心把一个表truncate掉,也是可以恢复的,只是不能通过rollback来恢复)。
3、对于外键(foreignkey )约束引用的表,不能使用 truncate table,而应使用不带 where 子句的 delete 语句。
4、truncatetable不能用于参与了索引视图的表。
三、drop
1、drop是DDL,会隐式提交,所以,不能回滚,不会触发触发器。
2、drop语句删除表结构及所有数据,并将表所占用的空间全部释放。
3、drop语句将删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。
double后面的分号在下个大括号外边
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
long[] arr = new long[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextLong();
}
demo1(arr);
return;
}
}
public static void demo1(long[] arr) {
//奇数数量
int oddSum = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 1) {
oddSum++;
}
}
//如果全是偶数或者全是奇数则无法排序,直接输出
if (oddSum == 0 || oddSum == arr.length) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
return;
}
//如果至少存在一对奇偶数,则可以将序列全部从小到大排列
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
while (t-- != 0) {
int n = in.nextInt();
long[] a = new long[n];
for (int i = 0; i < n; i++) {
a[i] = in.nextLong();
}
Arrays.sort(a);
if (a[n-2] + a[n-3] > a[n-1]){ //只要只要最后二个和第一个加起来大于最后一个
//可以考虑将最后一个往前交换一位,这样都能满足条件
System.out.println("YES");
}else {
System.out.println("NO");
}
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int[] arr=new int[num+1];
for(int i=1;i<arr.length;i++){
arr[i]=sc.nextInt();
}
int n=sc.nextInt();
//int[] a=new int[n];
for(int i=0;i<n;i++){
int index=sc.nextInt();
//int count=func(arr,index)-1;
double ans=func(arr,index) * 1.0 / num * 100;
//System.out.printf("%.6f",ans);
System.out.println(String.format("%.6f",ans));
//System.out.println();
}
}
private static int func(int[] arr, int nextInt) {
int ount=0;
for(int i=1;i<arr.length;i++){
if(arr[i]<=arr[nextInt])
ount++;
}
return --ount;
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
sc.nextLine();
for (int i = 0; i < T; i++) {
String s1 = sc.nextLine();
String s2 = sc.nextLine();
System.out.println(solution(s1, s2));
}
}
public static String solution (String s1, String s2) {
ArrayList<String> list = new ArrayList<String>();
String tmp = s1;
while (tmp.length() > 1) {
StringBuilder rev = new StringBuilder();
for (int i = 0; i < tmp.length(); i++) {
if (tmp.charAt(i) == '0')
rev.append('1');
else
rev.append('0');
}
while (rev.length() > 1 && rev.charAt(0) == '0') {
rev.deleteCharAt(0);
}
String l = rev.toString();
tmp = l;
if (!l.equals(""))
list.add(l);
}
//如果出现了“1”,那么就需要额外加上一个“0”
if (list.contains("1"))
list.add("0");
int index = 0;
while (index < s2.length()) {
int n = 0;
if (index + s1.length() <= s2.length() && s2.substring(index, index + s1.length()).equals(s1))
index += s1.length();
else if (index < s2.length()) {
for (int i = 0; i < list.size(); i++) {
String ss = list.get(i);
if (index + ss.length() <= s2.length() && s2.substring(index, index + ss.length()).equals(ss)) {
index += ss.length();
break;
}
else
n++;
}
if (n == list.size())
return "NO";
}
else
return "NO";
}
return "YES";
}
}
import java.util.Scanner;
/**
* @author Mr.Zhao
* @version 1.0
* @Description:
* @date 2020/1/5 10:48
*/
public class Test01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
int[] arr = new int[i];
for (int i1 = 0; i1 < i; i1++) {
int j = scanner.nextInt();
arr[i1] = j;
}
for (int i1 = 0; i1 < arr.length; i1++) {
int k = arr[i1] / 9;
int k1 = arr[i1] % 9;
StringBuilder stringBuilder = new StringBuilder();
if (k1 != 0) {
stringBuilder.append(k1);
}
for (int i2 = 0; i2 < k; i2++) {
stringBuilder.append(9);
}
System.out.println(stringBuilder);
}
}
}
t=int(input())
for _ in range(t):
a,b,c=map(int,input().split())
maxnum=max(a,b,c)
total=a+b+c
if maxnum//2>=total-maxnum:
if maxnum%2==0:
print(maxnum//2)
else:
print((maxnum+1)//2)
else:
if total%3==0:
print(total//3)
elif total%3==1:
print((total+2)//3)
else:
print((total+1)//3)
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
while(m-- > 0) {
int n = sc.nextInt();
int[] nums = new int[n];
for(int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
System.out.println(longestSub(nums));
}
}
public static int longestSub(int[] nums) {
int i = 0, j = 1, max = 0, sum = nums[0],n = nums.length;
while(j < n) {
if(nums[j] >= sum) {
sum += nums[j];
max = Math.max(max, j-i+1);
j++;
} else {
sum -= nums[i];
i++;
}
}
return max;
}
}
python
import sys
t = int(sys.stdin.readline())
def f():
n = int(sys.stdin.readline())
ls = list(map(int, sys.stdin.readline().split()))
numsum = sum(ls)
if numsum%2==1:
print('NO')
return
target = int(numsum/2)
start,end,num = 0,0,ls[0]
while end<n and start<n:
if num==target:
print('YES')
return
elif num<target:
if end==n-1:
print('NO')
return
end+=1
num+=ls[end]
elif num>target:
num-=ls[start]
start+=1
print("NO")
for i in range(t):
f()