我需要一些帮助来计算数组中相邻元素的数量。
假设我有4个整数数组。
myArray = {1, 1, 1, 1}
myArray2 = {5, 6, 7, 8, 7, 1, 10, 11, 12};
myArray3 = {5, 6, 7, 7, 8, 1, 10, 11, 12};
myArray4 = {5, 6, 7, 7, 8, 1, 10, 11, 11, 11, 12};
我想计算这些数组中元素的数量。
期望的输出应该是:
myArray => 1 (1 bunch of adjacent element "1")
myArray2 => 0 (no adjacent element)
myArray3 => 1 (1 bunch of adjacent element "7")
myArray4 => 2 (2 bunches of adjacent elements "7" and "11")
我可以计算相邻元素,但不计算束数。
以下是我写的代码:
import acm.program.ConsoleProgram;
public class project extends ConsoleProgram{
public void run ()
{
int[] myArray = {1, 1, 1, 1};
int[] myArray2 = {5, 6, 7, 8, 7, 1, 10, 11, 12};
int[] myArray3 = {5, 6, 7, 7, 8, 1, 10, 11, 12};
int[] myArray4 = {5, 6, 7, 7, 8, 1, 10, 11, 11, 11, 12};
println("myArray -> " + countBunches(myArray));
println("myArray2 -> " + countBunches(myArray2));
println("myArray3 -> " + countBunches(myArray3));
}
public int countBunches(int[] myArray)
{
int count = 0;
int saveIndex;
int saveContent;
for(int i = 0; i<myArray.length; i++)
{
if(i == 0)
{
saveContent = myArray[i];
}
else
{
saveContent = myArray[i-1];
if(saveContent == myArray[i])
{
saveContent = myArray[i];
saveIndex = i;
count++;
println(myArray[saveIndex] + " repatingb" + saveIndex + ". element");
}
else
{
saveContent = myArray[i];
}
}
}
return(count);
}
}
答案 0 :(得分:1)
我不想做作业,但让我们看看。
采用什么方法?
这或多或少是你的方法。
或者你也可以检查一下它是否是一堆(内部循环)的开头并且在一堆之后设置i。
使用明确的变量:
public int countBunches(int[] numbers)
答案 1 :(得分:1)
问题在于,每次元素与最后一个元素匹配时,您都在计算。因此,如果连续有3个相同的项目,则计为2,而不是1。
一种方法是跟踪最后一项以及是否匹配:
public int countBunches(int[] myArray)
{
int count = 0;
int lastItem;
boolean lastItemMatched;
for(int i = 0; i<myArray.length; i++)
{
if(i == 0)
{
lastItem = myArray[0];
lastItemMatched = false;
}
else
{
if(lastItem == myArray[i])
{
if(!lastItemMatched)
{
count++;
}
lastItemMatched = true;
} else {
lastItemMatched = false;
}
lastItem = myArray[i];
}
}
return count;
}
答案 2 :(得分:0)
这是一个很简单的方法:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, object: PFObject?) -> PFTableViewCell? {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cells", for: indexPath as IndexPath) as! MyCell
cell.object = object
let currentLocation = CLLocation()
locManager.distanceFilter = 50
if( CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedWhenInUse ||
CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedAlways){
let coordinate₀ = CLLocation(latitude: CLLocationDegrees(-41)!, longitude: CLLocationDegrees(52.3)!)
let coordinate₁ = CLLocation(latitude: currentLocation.coordinate.longitude, longitude: currentLocation.coordinate.latitude)
let distanceInMeters = coordinate₀.distance(from: coordinate₁)
if(distanceInMeters <= 1609)
{
cell.Distance.text = "\(Float(round(distanceInMeters * 3.28084)).cleanValue) ft"
}
else
{
cell.Distance.text = "\(Float(round(distanceInMeters / 1609)).cleanValue) mi"
}
}
}
在这种方法中,我们跟踪前一个数字(这就是我使用Integer的原因,以便能够确定是否存在先前的数字并依赖于null)。
一个技巧是在内循环中遍历相同数字的整个序列。