目录后缀数组构造 - 倍增法用途 - LCP(最长公共前缀)height 数组引理及证明引理LCP-Lemma定理LCP-Theorem后缀数组对于给定的字符串\(s\),构建两个数组\(sa\)和\(rk\),其中\(rk[i]\)表示\(s[i,n]\)在\(s\)的所有后缀中的字典序排名,\(sa[i]\)则表示排名\(i\)的后缀的最左端位置。容易发现有\(sa[rk[i]]=rk[sa[i]]=i\)。构造 - 倍增法一般来说,我们用倍增法\(O(n\log n)\)构建出\(rk\)数组就可以了。我们倍增考虑的长度\(k\)。当...
地址 https://leetcode-cn.com/problems/minimum-increment-to-make-array-unique/给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]
输出:1
解释:经过一次 move 操作,数组将变为 [1, 2, 3]。
示例 2:输入:[3,2,1,2,1,7]
输出:6
解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。
可以看出 5 次或 5 次以下的 move 操作是不能让数...
思路一:暴力解法,直接平方,然后添加到vector中class Solution {
public:vector<int> sortedSquares(vector<int>& A) {vector<int> res;if(A.size()==0){return res;}for(auto i:A){res.push_back(i*i);}sort(res.begin(),res.end());return res;}
}; 思路二:原文:https://www.cnblogs.com/tianjiale/p/11069036.html
返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K如果没有和至少为 K 的非空子数组,返回 -1 。示例 1:输入:A = [1], K = 1
输出:1示例 2:输入:A = [1,2], K = 4
输出:-1示例 3:输入:A = [2,-1,2], K = 3
输出:31 <= A.length <=
50000
-10 ^ 5 <= A[i] <= 10 ^ 5
1 <= K <= 10 ^ 9 这道题的关键在于我们要知道各个区间的和。从而来判断哪个区间的和是满足要求的。用暴利解法逐个判断是可行的,但是耗费的时间...
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231.Find the maximum result of ai XOR aj, where 0 ≤ i, j < n.Could you do this in O(n) runtime?Example:Input: [3, 10, 5, 25, 2, 8]Output: 28Explanation: The maximum result is 5 ^ 25 = 28.
classSolution:def findMaximumXOR(self, nums):""" :type nums: List[int] :rtype: int """ head = self.buildTrie...
反转数组
package com.zxm.array;public class ArrayDemo4 {public static void main(String[] args) {int[] a = {1, 2, 3, 4, 5};int[] reverse = reverse(a);printArray(reverse);}public static int[] reverse(int[] a) {int[] result = new int[a.length];for (int i = 0, j = a.length - 1; i < a.length; i++, j--) {result[j] = a[i];}return result;}public static void printArray(int[] a){for(int i=0;i<a.length;i++){...
FLEX 集合数组ArrayCollection操作实例<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate the Halo DataGrid control. -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"xmlns:s="library://ns.adobe.com/flex/spark"xmlns:mx="library://ns.adobe.com/flex/mx"><fx:Script><![CDATA[import mx.collections.ArrayCollection;//添加对象publicfunction insertCollection():void{//方法1//一个...
例3.5 利用不规则的二维数组存储数据,输出杨辉三角形 1//杨辉三角形 2publicclass ArrayYanghui3{4publicstaticvoid main (String [] args)5 {6int i, j;7int yanghui[] []= {{1}, {1,1}, {1, 2, 1}, {1, 3, 3, 1}, {1,4,6,4,1}};8for (i = 0; i < yanghui.length - i; i++)9 {
10for (j = 0; j < yanghui.length - i; j++)
11 System.out.print(" ");
12for (j = 0; j < yanghui [i].length; j++)
13 ...
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 1class Solution {2public:3 vector<int> multiply(const vector<int>& A) {4 vector<int> result,result1,result2;5if (A.size() == 0)6return result;7if(A.size() == 1)8 {9 result.push_back(0);
10return result;
11 }
12 resul...
题目传送阵
class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int p=m+n-1; //指向nums1数组的末尾int i=m-1,j=n-1; //分别指向nums1,nums2的最后一个元素while(i>=0 && j>=0){if(nums1[i]>nums2[j]){nums1[p--]=nums1[i--];}else{nums1[p--]=nums2[j--];}//nums1[p--]=nums1[i]>nums2[j]?nums1[i--]:nums2[j--];}while(j>=0){nums1[p--]=nums2[j--];}}
}
// 判断数组中是否有同一项,例如:["111","22","33","111"] 返回true
export const isRepeat = arr => {var hash = {}for (var i in arr) {if (hash[arr[i]])//hash 哈希returntruehash[arr[i]] = true}returnfalse
} 原文:https://www.cnblogs.com/wuqilang/p/13232134.html
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title></head><body><script>var arr = [{szm:‘A‘,list:[{nm:1,id:1}]},{szm:‘B‘,list:[{nm:2,id:2}]},{szm:‘A‘,list:[{nm:‘i‘,id:‘o‘}]},{szm:‘C‘,list:[{nm:1,id:1}]}] ,all = [];for(var i = 0 ; i < ...
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1031保存后缀数组模版。其实如果数据范围小一点,或者空间限制再大一点,或者甚至只要字母表再小一点就可以使用后缀自动机了,只可惜空间不允许,就用后缀数组!其实还是不是很理解代码,是否该当成黑盒代码背下来呢?#include <cstdio>
#include <cstring>
#include <algorithm>const int maxn = 200005;int n, mx, sa[maxn], t1[maxn], t2[maxn], c[maxn], *x, *y;
cha...
在索引数组中说到数组中有元素删除时,使用for((expr1;expr2;expr3 ))访问,如何过滤掉unset状态的元素。$ array_name=([0]="a" [1]="bb" [2]="ccc" [3]="dddd")$ unset array_name[2]$ for((i=0;i<=4-1;i++)); do echo ${array_name[i]}; done abbdddd$给出2种方法:第1种,若能获取到数组array_name的索引,那缺失索引代表的元素就是unset状态。在字符串处理中提到了变量扩展,其提供了获取数组索引列表的功能(不包含被删除元素的...
现在有n个砝码。第i个砝码的重量为w[i],砝码的左盘可以放任意多个m克的物品(至少放一个),小A希望在右盘放最少的砝码使天平平衡。如果可以做到输出最少的砝码数,不能做到输出-1。
输入:第一行一个 T<5,对于每个T,输入 n,m (n,m<2000)
输入w[0...n-1] (w[i]<200)
输出:每组 T 输出最少砝码数
1
5 6
1 2 3 4 12
输出
1
做盘放2个6克,右盘放1个12克
输入2
2
1 3
2
5 6
1 2 3 4 12
输出
-1
1暴力背包 40%...
#include<bits/...