Java语言中的可比单调函数
我正在尝试实现一个算法,该算法检查可比较元素的数组是增加还是减少。到目前为止,我已经写了这个方法:Java语言中的可比单调函数,java,arrays,generics,java-8,Java,Arrays,Generics,Java 8,我正在尝试实现一个算法,该算法检查可比较元素的数组是增加还是减少。到目前为止,我已经写了这个方法: class Solution { public boolean isMonotonic(int[] A) { int store = 0; for (int i = 0; i < A.length - 1; ++i) { int c = Integer.compare(A[i], A[i+1]); if
class Solution {
public boolean isMonotonic(int[] A) {
int store = 0;
for (int i = 0; i < A.length - 1; ++i) {
int c = Integer.compare(A[i], A[i+1]);
if (c != 0) {
if (c != store && store != 0)
return false;
store = c;
}
}
return true;
}
}
为了使方法采用泛型参数,请更改其标题:
public static <T extends Comparable<? super T>> boolean isMonotonic(T[] A)
为了使方法采用泛型参数,请更改其标题:
public static <T extends Comparable<? super T>> boolean isMonotonic(T[] A)
严格单调函数:
public static boolean isMonotone(int[] a) {
boolean monotone = true;
if(a[0]>a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]>a[i+1])){
monotone=false;
}
}
}
if(a[0]<a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]<a[i+1])){
monotone=false;
}
}
}
if(a[0]==a[1]) return false;
return monotone;
}
public static boolean isMonotone(int[] a) {
boolean monotone = true;
int i=0;
while(a[i]==a[i+1]) {
i++;
}
if(a[i]>a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]>=a[j+1])){
monotone=false;
}
}
}
if(a[i]<a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]<=a[j+1])){
monotone=false;
}
}
}
return monotone;
}
严格单调函数:
public static boolean isMonotone(int[] a) {
boolean monotone = true;
if(a[0]>a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]>a[i+1])){
monotone=false;
}
}
}
if(a[0]<a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]<a[i+1])){
monotone=false;
}
}
}
if(a[0]==a[1]) return false;
return monotone;
}
public static boolean isMonotone(int[] a) {
boolean monotone = true;
int i=0;
while(a[i]==a[i+1]) {
i++;
}
if(a[i]>a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]>=a[j+1])){
monotone=false;
}
}
}
if(a[i]<a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]<=a[j+1])){
monotone=false;
}
}
}
return monotone;
}
单调函数:
public static boolean isMonotone(int[] a) {
boolean monotone = true;
if(a[0]>a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]>a[i+1])){
monotone=false;
}
}
}
if(a[0]<a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]<a[i+1])){
monotone=false;
}
}
}
if(a[0]==a[1]) return false;
return monotone;
}
public static boolean isMonotone(int[] a) {
boolean monotone = true;
int i=0;
while(a[i]==a[i+1]) {
i++;
}
if(a[i]>a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]>=a[j+1])){
monotone=false;
}
}
}
if(a[i]<a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]<=a[j+1])){
monotone=false;
}
}
}
return monotone;
}
单调函数:
public static boolean isMonotone(int[] a) {
boolean monotone = true;
if(a[0]>a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]>a[i+1])){
monotone=false;
}
}
}
if(a[0]<a[1]) {
for(int i=0;i<(a.length-1);i++) {
if(!(a[i]<a[i+1])){
monotone=false;
}
}
}
if(a[0]==a[1]) return false;
return monotone;
}
public static boolean isMonotone(int[] a) {
boolean monotone = true;
int i=0;
while(a[i]==a[i+1]) {
i++;
}
if(a[i]>a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]>=a[j+1])){
monotone=false;
}
}
}
if(a[i]<a[i+1]) {
for(int j=0;j<(a.length-1);j++) {
if(!(a[j]<=a[j+1])){
monotone=false;
}
}
}
return monotone;
}
不要将泛型与数组混用。泛型是不变的并被擦除,而数组是协变的并被保留。这是制造麻烦的方法。您可以使用列表吗?您没有显示任何有问题的代码,对吗?这里没有泛型,没有可比性,什么是可比性?@Turing85我正在学习算法设计手册,这本书中有一个挑战,需要我使用arrays@luk2302我首先为一个int数组编写了这个代码,但我现在正试图找到一个解决方案,使用一个用于共享的感谢数组,非常有用!不要将泛型与数组混用。泛型是不变的并被擦除,而数组是协变的并被保留。这是制造麻烦的方法。您可以使用列表吗?您没有显示任何有问题的代码,对吗?这里没有泛型,没有可比性,什么是可比性?@Turing85我正在学习算法设计手册,这本书中有一个挑战,需要我使用arrays@luk2302我首先为一个int数组编写了这个代码,但我现在正试图找到一个解决方案,使用一个用于共享的感谢数组,非常有用!这个密码伤了我的眼睛。请仔细阅读使用早期输出循环代码。我刚刚做了一些更改。过来看!这个密码伤了我的眼睛。请仔细阅读使用早期输出循环代码。我刚刚做了一些更改。过来看!