Maximum Perimeter Triangle

  • + 0 comments

    C#

    public static List<int> maximumPerimeterTriangle(List<int> sticks)
        {
            List<List<int>> points = new List<List<int>>();
            
            var orderSticks = sticks.Order().ToList();
            int lenght = orderSticks.Count();
            
            for(int i = 0; i < lenght - 2; i++){
                int a = orderSticks[i];
                int b = orderSticks[i + 1];
                int c = orderSticks[i + 2];
                if((a + b) > c && (a + c) > b && (b + c) > a){
                    points.Add(new List<int>{a, b,c});
                }  
            }
            
            if(points.Count() == 0 ) return new List<int>{-1};
            
            long perimeterMax = -1;
            int index = 0;
            
            foreach(List<int> point in points){
                long sum = point.Sum(x => (long)x);
                if(sum > perimeterMax){
                    perimeterMax = sum;
                    index = points.IndexOf(point);
                }
            }
            
            return points[index];
        }
    
    }